#fws-header-v2,
  #fws-header-v2 * {
    box-sizing: border-box !important;
    font-family: "Inter", Arial, sans-serif !important;
  }

  #fws-header-v2 {
    --fwsv2-max: 1400px;
    --fwsv2-gap: 24px;
    --fwsv2-left-edge: max(var(--fwsv2-gap), calc((100vw - var(--fwsv2-max)) / 2));

    --fwsv2-smooth-out: cubic-bezier(.16, 1, .3, 1);
    --fwsv2-smooth-soft: cubic-bezier(.22, .75, .18, 1);
    --fwsv2-shrink-ease: cubic-bezier(.19, 1, .22, 1);
    --fwsv2-color-ease: cubic-bezier(.22, .61, .36, 1);

    --fwsv2-text-size: clamp(14px, .92vw, 16px);
    --fwsv2-text-line: 1.55;
    --fwsv2-text-letter: -.035em;
    --fwsv2-text-weight: 500;

    --header-transparent-text: #ffffff;
    --header-transparent-muted: rgba(255,255,255,.76);
    --header-bg-scrolled: rgba(238,240,242,.78);
    --header-border-scrolled: rgba(11,27,51,.075);
    --header-text: #0B1B33;
    --header-muted: rgba(11,27,51,.68);
    --header-accent: #088FD3;
    --header-accent-hover: #0AA1ED;

    --fwsv2-bar-bg: transparent;
    --fwsv2-bar-border: transparent;
    --fwsv2-bar-shadow: none;
    --fwsv2-bar-backdrop: none;
    --fwsv2-nav-color: var(--header-transparent-muted);
    --fwsv2-nav-hover: var(--header-transparent-text);
    --fwsv2-nav-active: var(--header-transparent-text);
    --fwsv2-sep-color: rgba(255,255,255,.22);
    --fwsv2-logo-filter: brightness(0) invert(1);

    --fwsv2-shrink-progress: 0;
    --fwsv2-bar-scale: 1;
    --fwsv2-content-scale: 1;
    --fwsv2-bar-max-width: 1400px;
    --fwsv2-bar-viewport-gap: 48px;

    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    max-width: 100vw !important;
    z-index: 999999 !important;
    pointer-events: none !important;
  }

  #fws-header-v2.is-scrolled,
  #fws-header-v2.is-compact,
  #fws-header-v2.is-force-open {
    --fwsv2-bar-bg: var(--header-bg-scrolled);
    --fwsv2-bar-border: var(--header-border-scrolled);
    --fwsv2-bar-shadow: 0 18px 46px rgba(11, 27, 51, .075);
    --fwsv2-bar-backdrop: blur(14px) saturate(118%);
    --fwsv2-nav-color: var(--header-muted);
    --fwsv2-nav-hover: var(--header-accent);
    --fwsv2-nav-active: var(--header-text);
    --fwsv2-sep-color: rgba(11,27,51,.14);
    --fwsv2-logo-filter: none;
  }

  #fws-header-v2 a {
    text-decoration: none !important;
  }

  #fws-header-v2 a,
  #fws-header-v2 button,
  #fws-header-v2 label,
  #fws-header-v2 input,
  #fws-header-v2 .fwsv2-mobile-link,
  #fws-header-v2 .fwsv2-mobile-panel-btn,
  #fws-header-v2 .fwsv2-mobile-project,
  #fws-header-v2 .fwsv2-mobile-sublist a,
  #fws-header-v2 .fwsv2-mobile-panel-cta {
    -webkit-tap-highlight-color: transparent !important;
    tap-highlight-color: transparent !important;
    outline: none !important;
    box-shadow: none;
    -webkit-touch-callout: none !important;
  }

  #fws-header-v2 a:focus,
  #fws-header-v2 a:active,
  #fws-header-v2 button:focus,
  #fws-header-v2 button:active,
  #fws-header-v2 label:focus,
  #fws-header-v2 label:active,
  #fws-header-v2 input:focus,
  #fws-header-v2 input:active,
  #fws-header-v2 .fwsv2-mobile-link:focus,
  #fws-header-v2 .fwsv2-mobile-link:active,
  #fws-header-v2 .fwsv2-mobile-panel-btn:focus,
  #fws-header-v2 .fwsv2-mobile-panel-btn:active,
  #fws-header-v2 .fwsv2-mobile-project:focus,
  #fws-header-v2 .fwsv2-mobile-project:active,
  #fws-header-v2 .fwsv2-mobile-sublist a:focus,
  #fws-header-v2 .fwsv2-mobile-sublist a:active,
  #fws-header-v2 .fwsv2-mobile-panel-cta:focus,
  #fws-header-v2 .fwsv2-mobile-panel-cta:active {
    outline: none !important;
    box-shadow: none !important;
    background-color: transparent !important;
  }

  #fws-header-v2 .fwsv2-mobile-panel-cta:focus,
  #fws-header-v2 .fwsv2-mobile-panel-cta:active {
    background-color: #088FD3 !important;
  }

  #fws-header-v2 button {
    border: 0 !important;
    background: transparent !important;
    cursor: pointer !important;
    padding: 0 !important;
    margin: 0 !important;
    font: inherit !important;
  }

  #fws-header-v2 .fwsv2-bar {
    position: relative !important;
    width: min(var(--fwsv2-bar-max-width), calc(100vw - var(--fwsv2-bar-viewport-gap))) !important;
    height: 66px !important;
    margin: 14px auto 0 !important;
    display: flex !important;
    align-items: center !important;
    padding: 0 12px 0 28px !important;
    border-radius: 10px !important;
    border: 1px solid var(--fwsv2-bar-border) !important;
    background: var(--fwsv2-bar-bg) !important;
    backdrop-filter: var(--fwsv2-bar-backdrop) !important;
    -webkit-backdrop-filter: var(--fwsv2-bar-backdrop) !important;
    box-shadow: var(--fwsv2-bar-shadow) !important;
    pointer-events: auto !important;
    overflow: hidden !important;
    transform: translate3d(0, 0, 0) scaleX(var(--fwsv2-bar-scale)) !important;
    transform-origin: center top !important;
    backface-visibility: hidden !important;
    contain: paint style !important;
    will-change: transform, background, border-color, box-shadow !important;
    transition:
      height .74s var(--fwsv2-shrink-ease),
      padding .74s var(--fwsv2-shrink-ease),
      background .78s var(--fwsv2-color-ease),
      backdrop-filter .78s var(--fwsv2-color-ease),
      -webkit-backdrop-filter .78s var(--fwsv2-color-ease),
      box-shadow .78s var(--fwsv2-color-ease),
      border-color .78s var(--fwsv2-color-ease) !important;
  }

  #fws-header-v2 .fwsv2-bar > .fwsv2-logo,
  #fws-header-v2 .fwsv2-bar > .fwsv2-compact-arrow,
  #fws-header-v2 .fwsv2-bar > .fwsv2-nav-wrap,
  #fws-header-v2 .fwsv2-bar > .fwsv2-right,
  #fws-header-v2 .fwsv2-bar > .fwsv2-mobile-toggle {
    transform: translate3d(0, 0, 0) scaleX(var(--fwsv2-content-scale)) !important;
    transform-origin: center center !important;
    will-change: transform !important;
  }

  #fws-header-v2.is-scrolled .fwsv2-bar {
    height: 62px !important;
    margin-top: 14px !important;
    background: var(--fwsv2-bar-bg) !important;
    backdrop-filter: var(--fwsv2-bar-backdrop) !important;
    -webkit-backdrop-filter: var(--fwsv2-bar-backdrop) !important;
    border-color: var(--fwsv2-bar-border) !important;
    box-shadow: var(--fwsv2-bar-shadow) !important;
  }

  #fws-header-v2 .fwsv2-logo {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    min-width: 210px !important;
    height: 100% !important;
    color: var(--fwsv2-nav-hover) !important;
    text-decoration: none !important;
    flex-shrink: 0 !important;
    transition:
      min-width .64s var(--fwsv2-smooth-out),
      max-width .64s var(--fwsv2-smooth-out),
      color .28s var(--fwsv2-color-ease) !important;
  }

  #fws-header-v2 .fwsv2-logo-img {
    display: block !important;
    width: auto !important;
    height: 46px !important;
    max-width: 210px !important;
    object-fit: contain !important;
    filter: var(--fwsv2-logo-filter) !important;
    transition:
      height .64s var(--fwsv2-smooth-out),
      max-width .64s var(--fwsv2-smooth-out),
      filter .64s var(--fwsv2-color-ease) !important;
  }

  #fws-header-v2 .fwsv2-compact-arrow {
    width: 0 !important;
    height: 34px !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    flex-shrink: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: hidden !important;
    color: var(--fwsv2-nav-color) !important;
    transition:
      width .62s var(--fwsv2-smooth-out),
      min-width .62s var(--fwsv2-smooth-out),
      margin .62s var(--fwsv2-smooth-out),
      opacity .28s ease,
      visibility .28s ease,
      color .18s ease !important;
  }

  #fws-header-v2 .fwsv2-compact-arrow span {
    display: inline-block !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    color: currentColor !important;
    transform: translateX(0) !important;
    transition: transform .28s var(--fwsv2-smooth-out), color .18s ease !important;
  }

  #fws-header-v2 .fwsv2-compact-arrow:hover {
    color: var(--fwsv2-nav-hover) !important;
  }

  #fws-header-v2 .fwsv2-compact-arrow:hover span {
    transform: translateX(2px) !important;
  }

  #fws-header-v2 .fwsv2-nav-wrap {
    flex: 1 !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    min-width: 0 !important;
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
    overflow: hidden !important;
    transition:
      opacity .32s ease,
      visibility .32s ease,
      max-width .82s var(--fwsv2-smooth-out) !important;
  }

  #fws-header-v2 .fwsv2-nav {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: clamp(20px, 2vw, 34px) !important;
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  #fws-header-v2 .fwsv2-nav li {
    margin: 0 !important;
    padding: 0 !important;
  }

  #fws-header-v2 .fwsv2-nav-btn,
  #fws-header-v2 .fwsv2-nav-link {
    display: inline-flex !important;
    align-items: center !important;
    gap: 7px !important;
    font-size: var(--fwsv2-text-size) !important;
    font-weight: var(--fwsv2-text-weight) !important;
    color: var(--fwsv2-nav-color) !important;
    line-height: var(--fwsv2-text-line) !important;
    letter-spacing: var(--fwsv2-text-letter) !important;
    white-space: nowrap !important;
    transition: color .52s var(--fwsv2-color-ease) !important;
  }

  #fws-header-v2 .fwsv2-nav-btn:hover,
  #fws-header-v2 .fwsv2-nav-link:hover {
    color: var(--fwsv2-nav-hover) !important;
  }

  #fws-header-v2 .fwsv2-nav-btn.is-active,
  #fws-header-v2 .fwsv2-nav-link.is-active {
    color: var(--fwsv2-nav-active) !important;
  }

  #fws-header-v2 .fwsv2-caret {
    display: inline-block !important;
    width: 6px !important;
    height: 6px !important;
    border-right: 1.5px solid currentColor !important;
    border-bottom: 1.5px solid currentColor !important;
    transform: rotate(45deg) translateY(-2px) !important;
    transition: transform .28s var(--fwsv2-smooth-out) !important;
  }

  #fws-header-v2 .fwsv2-nav-btn.is-active .fwsv2-caret {
    transform: rotate(-135deg) translateY(-1px) !important;
  }

  #fws-header-v2 .fwsv2-right {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 0 !important;
    min-width: 210px !important;
    flex-shrink: 0 !important;
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
    overflow: hidden !important;
    transition:
      opacity .32s ease,
      visibility .32s ease,
      min-width .82s var(--fwsv2-smooth-out),
      max-width .82s var(--fwsv2-smooth-out) !important;
  }

  #fws-header-v2 .fwsv2-cta {
    height: 42px !important;
    min-width: 176px !important;
    padding: 0 18px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 8px !important;
    background: var(--header-accent) !important;
    color: #ffffff !important;
    font-size: var(--fwsv2-text-size) !important;
    font-weight: var(--fwsv2-text-weight) !important;
    line-height: var(--fwsv2-text-line) !important;
    letter-spacing: var(--fwsv2-text-letter) !important;
    box-shadow: 0 12px 30px rgba(8,143,211,.30) !important;
    white-space: nowrap !important;
    transition:
      transform .42s var(--fwsv2-smooth-out),
      background .52s var(--fwsv2-color-ease),
      box-shadow .52s var(--fwsv2-color-ease) !important;
  }

  #fws-header-v2 .fwsv2-cta:hover {
    transform: translateY(-1px) !important;
    background: var(--header-accent-hover) !important;
    color: #ffffff !important;
    box-shadow: 0 15px 34px rgba(8,143,211,.36) !important;
  }

  #fws-header-v2 .fwsv2-mega {
    position: fixed !important;
    top: 92px !important;
    left: 50% !important;
    width: min(var(--fwsv2-bar-max-width), calc(100vw - var(--fwsv2-bar-viewport-gap))) !important;
    transform: translateX(-50%) translateY(-10px) scaleX(var(--fwsv2-bar-scale)) !important;
    transform-origin: center top !important;
    background: rgba(238, 240, 242, .82) !important;
    border: 1px solid rgba(11, 27, 51, .075) !important;
    border-radius: 10px !important;
    box-shadow: 0 24px 62px rgba(11, 27, 51, .13) !important;
    backdrop-filter: blur(18px) saturate(122%) !important;
    -webkit-backdrop-filter: blur(18px) saturate(122%) !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    display: flex !important;
    overflow: hidden !important;
    z-index: 1000000 !important;
    will-change: transform, opacity !important;
    transition:
      opacity .30s ease,
      transform .42s var(--fwsv2-smooth-out),
      visibility .30s ease !important;
  }

  #fws-header-v2 .fwsv2-mega.is-open {
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
    transform: translateX(-50%) translateY(0) scaleX(var(--fwsv2-bar-scale)) !important;
  }

  #fws-header-v2 .fwsv2-mega > * {
    transform: scaleX(var(--fwsv2-content-scale)) !important;
    transform-origin: center top !important;
  }

  #fws-header-v2 .fwsv2-mega::before {
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    z-index: 0 !important;
    pointer-events: none !important;
    background:
      linear-gradient(
        115deg,
        transparent 0%,
        rgba(255, 255, 255, 0) 34%,
        rgba(255, 255, 255, .22) 48%,
        rgba(255, 255, 255, .08) 60%,
        transparent 78%
      ) !important;
    opacity: .18 !important;
    transform: translate3d(-14%, 0, 0) !important;
    animation: fwsv2-glass-breathe 18s ease-in-out infinite alternate !important;
  }

  #fws-header-v2 .fwsv2-projects-menu {
    position: relative !important;
    z-index: 1 !important;
    width: 100% !important;
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: clamp(28px, 2.7vw, 48px) !important;
    align-items: start !important;
    padding: 24px 34px 20px !important;
  }

  #fws-header-v2 .fwsv2-project-card {
    --fwsv2-project-card-x: 0px;

    display: block !important;
    min-width: 0 !important;
    color: #0B1B33 !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    overflow: visible !important;
    transform: translate3d(var(--fwsv2-project-card-x), 0, 0) !important;
    transition: transform .28s var(--fwsv2-smooth-out) !important;
  }

  #fws-header-v2 .fwsv2-project-card:nth-child(1) {
    --fwsv2-project-card-x: calc(24px * var(--fwsv2-shrink-progress));
  }

  #fws-header-v2 .fwsv2-project-card:nth-child(3) {
    --fwsv2-project-card-x: calc(-24px * var(--fwsv2-shrink-progress));
  }

  #fws-header-v2 .fwsv2-project-card:hover {
    transform: translate3d(var(--fwsv2-project-card-x), -2px, 0) !important;
  }

  #fws-header-v2 .fwsv2-project-card__media {
    display: block !important;
    width: 100% !important;
    background: transparent !important;
    border-radius: 0 !important;
    overflow: hidden !important;
  }

  #fws-header-v2 .fwsv2-project-card__media img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    object-fit: contain !important;
    object-position: center center !important;
    border-radius: 0 !important;
  }

  #fws-header-v2 .fwsv2-blog-thumb {
    position: relative !important;
    display: block !important;
    width: 100% !important;
    aspect-ratio: 16 / 10 !important;
    overflow: hidden !important;
    background:
      radial-gradient(circle at 18% 18%, rgba(255,255,255,.70), transparent 34%),
      linear-gradient(135deg, rgba(8,143,211,.18) 0%, rgba(8,143,211,.08) 42%, rgba(11,27,51,.12) 100%) !important;
  }

  #fws-header-v2 .fwsv2-blog-thumb::before {
    content: "" !important;
    position: absolute !important;
    inset: 18px !important;
    border: 1px solid rgba(11, 27, 51, .09) !important;
  }

  #fws-header-v2 .fwsv2-blog-thumb__tag {
    position: absolute !important;
    left: 18px !important;
    top: 18px !important;
    display: inline-flex !important;
    align-items: center !important;
    min-height: 28px !important;
    padding: 0 10px !important;
    background: rgba(255,255,255,.72) !important;
    color: rgba(11, 27, 51, .68) !important;
    font-size: 12px !important;
    line-height: 1 !important;
    letter-spacing: -.035em !important;
    font-weight: 600 !important;
  }

  #fws-header-v2 .fwsv2-blog-thumb__title {
    position: absolute !important;
    left: 18px !important;
    right: 18px !important;
    bottom: 18px !important;
    color: #0B1B33 !important;
    font-size: clamp(20px, 1.35vw, 28px) !important;
    line-height: 1.02 !important;
    letter-spacing: -.07em !important;
    font-weight: 500 !important;
  }

  #fws-header-v2 .fwsv2-project-card__body {
    display: block !important;
    padding: 12px 0 0 !important;
    background: transparent !important;
  }

  #fws-header-v2 .fwsv2-project-card__title {
    display: block !important;
    max-width: 520px !important;
    color: #0B1B33 !important;
    font-size: clamp(18px, 1.25vw, 23px) !important;
    line-height: 1.08 !important;
    letter-spacing: -.058em !important;
    font-weight: 500 !important;
  }

  #fws-header-v2 .fwsv2-project-card__desc {
    display: block !important;
    max-width: 94% !important;
    margin-top: 8px !important;
    color: rgba(11, 27, 51, .64) !important;
    font-size: clamp(13px, .9vw, 15px) !important;
    line-height: 1.46 !important;
    letter-spacing: -.034em !important;
    font-weight: 500 !important;
  }

  #fws-header-v2 .fwsv2-projects-action {
    grid-column: 1 / -1 !important;
    display: flex !important;
    justify-content: center !important;
    margin-top: -4px !important;
  }

  #fws-header-v2 .fwsv2-projects-btn {
    min-width: 220px !important;
    height: 46px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 0 22px !important;
    border-radius: 8px !important;
    background: #088FD3 !important;
    color: #ffffff !important;
    box-shadow: 0 14px 34px rgba(8, 143, 211, .22) !important;
    font-size: var(--fwsv2-text-size) !important;
    font-weight: var(--fwsv2-text-weight) !important;
    line-height: 1 !important;
    letter-spacing: var(--fwsv2-text-letter) !important;
    white-space: nowrap !important;
    transition:
      transform .28s var(--fwsv2-smooth-out),
      background .22s ease,
      box-shadow .22s ease !important;
  }

  #fws-header-v2 .fwsv2-projects-btn:hover {
    transform: translateY(-1px) !important;
    background: #0AA1ED !important;
    color: #ffffff !important;
    box-shadow: 0 18px 40px rgba(8, 143, 211, .28) !important;
  }

  #fws-header-v2 .fwsv2-solutions-menu {
    position: relative !important;
    z-index: 1 !important;
    width: 100% !important;
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: clamp(28px, 2.7vw, 48px) !important;
    align-items: start !important;
    padding: 34px 34px 38px !important;
  }

  #fws-header-v2 .fwsv2-solution-col {
    --fwsv2-solution-x: 0px;

    display: block !important;
    min-width: 0 !important;
    transform: translate3d(var(--fwsv2-solution-x), 0, 0) !important;
    transition: transform .28s var(--fwsv2-smooth-out) !important;
  }

  #fws-header-v2 .fwsv2-solution-col:nth-child(1) {
    --fwsv2-solution-x: calc(24px * var(--fwsv2-shrink-progress));
  }

  #fws-header-v2 .fwsv2-solution-col:nth-child(3) {
    --fwsv2-solution-x: calc(-24px * var(--fwsv2-shrink-progress));
  }

  #fws-header-v2 .fwsv2-solution-title {
    display: block !important;
    max-width: 520px !important;
    margin: 0 0 22px !important;
    color: #0B1B33 !important;
    font-size: clamp(21px, 1.55vw, 30px) !important;
    line-height: 1.08 !important;
    letter-spacing: -0.058em !important;
    font-weight: 500 !important;
  }

  #fws-header-v2 .fwsv2-solution-list {
    display: flex !important;
    flex-direction: column !important;
    gap: 9px !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
  }

  #fws-header-v2 .fwsv2-solution-list li {
    margin: 0 !important;
    padding: 0 !important;
  }

  #fws-header-v2 .fwsv2-solution-list a {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 14px !important;
    min-height: 48px !important;
    padding: 12px 0 !important;
    color: rgba(11, 27, 51, .68) !important;
    font-size: clamp(15px, 1vw, 17px) !important;
    line-height: 1.18 !important;
    letter-spacing: -.045em !important;
    font-weight: 500 !important;
    border-bottom: 1px solid rgba(11, 27, 51, .075) !important;
    transition:
      color .22s ease,
      padding .28s var(--fwsv2-smooth-out),
      border-color .22s ease !important;
  }

  #fws-header-v2 .fwsv2-solution-list a:hover {
    color: #088FD3 !important;
    padding-left: 4px !important;
    border-color: rgba(8, 143, 211, .22) !important;
  }

  #fws-header-v2 .fwsv2-solution-list a span {
    color: rgba(11, 27, 51, .34) !important;
    font-size: 14px !important;
    line-height: 1 !important;
    transition: color .22s ease, transform .28s var(--fwsv2-smooth-out) !important;
  }

  #fws-header-v2 .fwsv2-solution-list a:hover span {
    color: #088FD3 !important;
    transform: translate(2px, -2px) !important;
  }

  #fws-header-v2 .fwsv2-mobile-toggle {
    display: none !important;
    width: 44px !important;
    height: 44px !important;
    border-radius: 0 !important;
    background: transparent !important;
    align-items: center !important;
    justify-content: center !important;
    margin-left: auto !important;
    cursor: pointer !important;
    -webkit-tap-highlight-color: transparent !important;
  }

  #fws-header-v2 .fwsv2-mobile-toggle input {
    display: none !important;
  }

  #fws-header-v2 .fwsv2-mobile-toggle svg {
    display: block !important;
    width: 36px !important;
    height: 36px !important;
    transition: transform 600ms cubic-bezier(0.4, 0, 0.2, 1) !important;
  }

  #fws-header-v2 .fwsv2-mobile-toggle .line {
    fill: none !important;
    stroke: var(--fwsv2-nav-color) !important;
    stroke-linecap: round !important;
    stroke-linejoin: round !important;
    stroke-width: 3 !important;
    transition:
      stroke-dasharray 600ms cubic-bezier(0.4, 0, 0.2, 1),
      stroke-dashoffset 600ms cubic-bezier(0.4, 0, 0.2, 1),
      stroke .52s var(--fwsv2-color-ease) !important;
  }

  #fws-header-v2 .fwsv2-mobile-toggle .line-top-bottom {
    stroke-dasharray: 12 63 !important;
  }

  #fws-header-v2 .fwsv2-mobile-toggle input:checked + svg {
    transform: rotate(-45deg) !important;
  }

  #fws-header-v2 .fwsv2-mobile-toggle input:checked + svg .line-top-bottom {
    stroke-dasharray: 20 300 !important;
    stroke-dashoffset: -32.42 !important;
  }

  #fws-header-v2 .fwsv2-mobile-menu {
    position: fixed !important;
    top: 90px !important;
    left: 50% !important;
    width: min(520px, calc(100vw - 32px)) !important;
    max-height: calc(100vh - 108px) !important;
    padding: 14px 14px 16px !important;
    border-radius: 14px !important;
    background: rgba(238, 240, 242, .92) !important;
    backdrop-filter: blur(22px) saturate(125%) !important;
    -webkit-backdrop-filter: blur(22px) saturate(125%) !important;
    box-shadow: 0 24px 70px rgba(11, 27, 51, .16) !important;
    border: 1px solid rgba(11, 27, 51, .08) !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    overflow: hidden auto !important;
    transform: translateX(-50%) translateY(-8px) !important;
    transition:
      opacity .24s ease,
      transform .36s var(--fwsv2-smooth-out),
      visibility .24s ease !important;
    z-index: 1000000 !important;
  }

  #fws-header-v2 .fwsv2-mobile-menu.is-open {
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
    transform: translateX(-50%) translateY(0) !important;
  }

  #fws-header-v2 .fwsv2-mobile-menu::-webkit-scrollbar {
    width: 6px !important;
  }

  #fws-header-v2 .fwsv2-mobile-menu::-webkit-scrollbar-thumb {
    background: rgba(11, 27, 51, .18) !important;
    border-radius: 999px !important;
  }

  #fws-header-v2 .fwsv2-mobile-row {
    display: grid !important;
    gap: 10px !important;
    width: 100% !important;
  }

  #fws-header-v2 .fwsv2-mobile-row--primary {
    grid-template-columns: repeat(3, max-content) !important;
    justify-content: space-between !important;
    padding-bottom: 8px !important;
    border-bottom: 1px solid rgba(11,27,51,.075) !important;
  }

  #fws-header-v2 .fwsv2-mobile-row--secondary {
    grid-template-columns: max-content max-content max-content !important;
    justify-content: space-between !important;
    align-items: center !important;
    column-gap: 0 !important;
    margin-top: 8px !important;
    padding-bottom: 0 !important;
  }

  #fws-header-v2 .fwsv2-mobile-row--secondary .fwsv2-mobile-panel-btn[data-mobile-panel="soluzioni"] {
    justify-self: start !important;
  }

  #fws-header-v2 .fwsv2-mobile-row--secondary .fwsv2-mobile-panel-btn[data-mobile-panel="progetti"] {
    justify-self: center !important;
    transform: none !important;
  }

  #fws-header-v2 .fwsv2-mobile-row--secondary .fwsv2-mobile-link--cta {
    justify-self: end !important;
    white-space: nowrap !important;
    text-align: right !important;
  }

  #fws-header-v2 .fwsv2-mobile-link,
  #fws-header-v2 .fwsv2-mobile-panel-btn {
    min-height: 44px !important;
    width: auto !important;
    max-width: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 5px !important;
    padding: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    border: 0 !important;
    color: rgba(11, 27, 51, .68) !important;
    font-size: 16.3px !important;
    font-weight: 500 !important;
    line-height: 1.32 !important;
    letter-spacing: -.035em !important;
    text-align: left !important;
    white-space: nowrap !important;
    transition:
      color .24s ease,
      transform .28s var(--fwsv2-smooth-out) !important;
  }

  #fws-header-v2 .fwsv2-mobile-link--cta {
    white-space: nowrap !important;
    line-height: 1.05 !important;
    font-size: 16.3px !important;
  }

  #fws-header-v2 .fwsv2-mobile-link:hover,
  #fws-header-v2 .fwsv2-mobile-panel-btn:hover,
  #fws-header-v2 .fwsv2-mobile-panel-btn.is-active {
    color: #0B1B33 !important;
    background: transparent !important;
    border-color: transparent !important;
  }

  #fws-header-v2 .fwsv2-mobile-panel-btn__icon {
    display: inline-block !important;
    font-size: 16px !important;
    line-height: 1 !important;
    transform: translateY(-1px) rotate(0deg) !important;
    color: rgba(11,27,51,.42) !important;
    transition:
      transform .32s var(--fwsv2-smooth-out),
      color .24s ease !important;
  }

  #fws-header-v2 .fwsv2-mobile-panel-btn.is-active .fwsv2-mobile-panel-btn__icon {
    transform: translateY(-1px) rotate(45deg) !important;
    color: #088FD3 !important;
  }

  #fws-header-v2 .fwsv2-mobile-panels {
    display: block !important;
    width: 100% !important;
  }

  #fws-header-v2 .fwsv2-mobile-panel {
    display: grid !important;
    grid-template-rows: 0fr !important;
    opacity: 0 !important;
    overflow: hidden !important;
    margin-top: 0 !important;
    transition:
      grid-template-rows .48s var(--fwsv2-smooth-out),
      opacity .26s ease,
      margin-top .32s var(--fwsv2-smooth-out) !important;
  }

  #fws-header-v2 .fwsv2-mobile-panel.is-open {
    grid-template-rows: 1fr !important;
    opacity: 1 !important;
    margin-top: 14px !important;
  }

  #fws-header-v2 .fwsv2-mobile-panel__inner {
    min-height: 0 !important;
    overflow: hidden !important;
  }

  #fws-header-v2 .fwsv2-mobile-panel__box {
    padding: 4px 0 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    border: 0 !important;
  }

  #fws-header-v2 .fwsv2-mobile-solutions {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 0 !important;
  }

  #fws-header-v2 .fwsv2-mobile-group {
    display: block !important;
    min-width: 0 !important;
  }

  #fws-header-v2 .fwsv2-mobile-solutions .fwsv2-mobile-group:first-child {
    padding-top: 0 !important;
    border-top: 0 !important;
  }

  #fws-header-v2 .fwsv2-mobile-group + .fwsv2-mobile-group {
    padding-top: 0 !important;
    margin-top: 18px !important;
    border-top: 0 !important;
  }

  #fws-header-v2 .fwsv2-mobile-group-title {
    display: block !important;
    margin: 0 0 8px !important;
    color: #0B1B33 !important;
    font-size: 27px !important;
    line-height: 1.04 !important;
    letter-spacing: -.058em !important;
    font-weight: 500 !important;
  }

  #fws-header-v2 .fwsv2-mobile-sublist {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
  }

  #fws-header-v2 .fwsv2-mobile-sublist li {
    margin: 0 !important;
    padding: 0 !important;
  }

  #fws-header-v2 .fwsv2-mobile-sublist a {
    min-height: 42px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px !important;
    padding: 11px 0 !important;
    border-bottom: 1px solid rgba(11,27,51,.07) !important;
    color: rgba(11, 27, 51, .66) !important;
    font-size: 16.3px !important;
    line-height: 1.32 !important;
    letter-spacing: -.035em !important;
    font-weight: 500 !important;
  }

  #fws-header-v2 .fwsv2-mobile-sublist a span {
    color: rgba(11,27,51,.34) !important;
    font-size: 16px !important;
    line-height: 1 !important;
  }

  #fws-header-v2 .fwsv2-mobile-projects {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }

  #fws-header-v2 .fwsv2-mobile-project {
    display: grid !important;
    grid-template-columns: 136px minmax(0, 1fr) !important;
    gap: 15px !important;
    align-items: center !important;
    min-width: 0 !important;
    padding: 14px 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    border: 0 !important;
    border-bottom: 1px solid rgba(11,27,51,.075) !important;
    color: #0B1B33 !important;
  }

  #fws-header-v2 .fwsv2-mobile-project:first-child {
    padding-top: 0 !important;
  }

  #fws-header-v2 .fwsv2-mobile-project:last-child {
    padding-bottom: 0 !important;
    border-bottom: 0 !important;
  }

  #fws-header-v2 .fwsv2-mobile-project__media {
    display: block !important;
    width: 136px !important;
    height: auto !important;
    overflow: hidden !important;
    border-radius: 9px !important;
    background: transparent !important;
  }

  #fws-header-v2 .fwsv2-mobile-project__media img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    object-fit: contain !important;
    object-position: center center !important;
    border-radius: 9px !important;
  }

  #fws-header-v2 .fwsv2-mobile-project__body {
    display: block !important;
    min-width: 0 !important;
  }

  #fws-header-v2 .fwsv2-mobile-project__title {
    display: block !important;
    color: #0B1B33 !important;
    font-size: 27px !important;
    line-height: 1.04 !important;
    letter-spacing: -.058em !important;
    font-weight: 500 !important;
  }

  #fws-header-v2 .fwsv2-mobile-project__desc {
    display: block !important;
    margin-top: 5px !important;
    color: rgba(11, 27, 51, .58) !important;
    font-size: 16.3px !important;
    line-height: 1.32 !important;
    letter-spacing: -.035em !important;
    font-weight: 500 !important;
  }

  #fws-header-v2 .fwsv2-mobile-panel-cta {
    min-height: 44px !important;
    margin-top: 14px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    border-radius: 10px !important;
    background: #088FD3 !important;
    color: #ffffff !important;
    box-shadow: 0 14px 34px rgba(8, 143, 211, .22) !important;
    font-size: 16.3px !important;
    font-weight: 500 !important;
    line-height: 1.15 !important;
    letter-spacing: -.035em !important;
  }

  @media (max-width: 1180px) {
    #fws-header-v2 .fwsv2-bar {
      width: calc(100vw - 32px) !important;
      padding: 0 14px 0 20px !important;
    }

    #fws-header-v2 .fwsv2-nav-wrap,
    #fws-header-v2 .fwsv2-right,
    #fws-header-v2 .fwsv2-mega {
      display: none !important;
    }

    #fws-header-v2 .fwsv2-logo {
      min-width: auto !important;
    }

    #fws-header-v2 .fwsv2-logo-img {
      height: 42px !important;
      max-width: 190px !important;
    }

    #fws-header-v2 .fwsv2-mobile-toggle {
      display: flex !important;
    }

    #fws-header-v2 .fwsv2-compact-arrow {
      display: none !important;
    }
  }

  @media (max-width: 640px) {
    #fws-header-v2 .fwsv2-bar {
      height: 58px !important;
      margin-top: 12px !important;
      width: calc(100vw - 24px) !important;
      padding: 0 10px 0 16px !important;
    }

    #fws-header-v2.is-scrolled .fwsv2-bar {
      height: 58px !important;
      margin-top: 12px !important;
    }

    #fws-header-v2 .fwsv2-logo-img {
      height: 36px !important;
      max-width: 160px !important;
    }

    #fws-header-v2 .fwsv2-mobile-toggle {
      width: 42px !important;
      height: 42px !important;
    }

    #fws-header-v2 .fwsv2-mobile-toggle svg {
      width: 34px !important;
      height: 34px !important;
    }

    #fws-header-v2 .fwsv2-mobile-menu {
      top: 80px !important;
      width: calc(100vw - 24px) !important;
      max-height: calc(100vh - 94px) !important;
      padding: 12px 12px 14px !important;
      border-radius: 12px !important;
    }

    #fws-header-v2 .fwsv2-mobile-link,
    #fws-header-v2 .fwsv2-mobile-panel-btn {
      min-height: 44px !important;
      padding: 0 2px !important;
      border-radius: 0 !important;
      font-size: 16.3px !important;
      letter-spacing: -.035em !important;
      line-height: 1.15 !important;
    }

    #fws-header-v2 .fwsv2-mobile-row--secondary {
      grid-template-columns: max-content max-content max-content !important;
      justify-content: space-between !important;
      column-gap: 0 !important;
    }

    #fws-header-v2 .fwsv2-mobile-row--secondary .fwsv2-mobile-panel-btn[data-mobile-panel="progetti"] {
      transform: none !important;
    }

    #fws-header-v2 .fwsv2-mobile-link--cta {
      font-size: 16.3px !important;
      line-height: 1.05 !important;
      white-space: nowrap !important;
    }

    #fws-header-v2 .fwsv2-mobile-panel__box {
      padding: 4px 0 0 !important;
      border-radius: 0 !important;
    }

    #fws-header-v2 .fwsv2-mobile-group-title {
      font-size: 26px !important;
      line-height: 1.04 !important;
      letter-spacing: -.058em !important;
    }

    #fws-header-v2 .fwsv2-mobile-sublist a {
      font-size: 16.3px !important;
    }

    #fws-header-v2 .fwsv2-mobile-projects {
      gap: 10px !important;
    }

    #fws-header-v2 .fwsv2-mobile-project {
      grid-template-columns: 126px minmax(0, 1fr) !important;
      gap: 13px !important;
      padding: 13px 0 !important;
    }

    #fws-header-v2 .fwsv2-mobile-project__media {
      width: 126px !important;
      height: auto !important;
      border-radius: 8px !important;
    }

    #fws-header-v2 .fwsv2-mobile-project__media img {
      border-radius: 8px !important;
    }

    #fws-header-v2 .fwsv2-mobile-project__title {
      font-size: 26px !important;
      line-height: 1.04 !important;
      letter-spacing: -.058em !important;
    }

    #fws-header-v2 .fwsv2-mobile-project__desc {
      font-size: 16.3px !important;
      line-height: 1.32 !important;
      letter-spacing: -.035em !important;
    }
  }

  @media (max-width: 380px) {
    #fws-header-v2 .fwsv2-mobile-link,
    #fws-header-v2 .fwsv2-mobile-panel-btn {
      font-size: 15px !important;
      padding: 0 1px !important;
    }

    #fws-header-v2 .fwsv2-mobile-row--secondary {
      column-gap: 0 !important;
      justify-content: space-between !important;
    }

    #fws-header-v2 .fwsv2-mobile-row--secondary .fwsv2-mobile-panel-btn[data-mobile-panel="progetti"] {
      transform: none !important;
    }

    #fws-header-v2 .fwsv2-mobile-link--cta {
      font-size: 14px !important;
      white-space: nowrap !important;
    }

    #fws-header-v2 .fwsv2-mobile-projects {
      gap: 8px !important;
    }

    #fws-header-v2 .fwsv2-mobile-project {
      grid-template-columns: 112px minmax(0, 1fr) !important;
      gap: 11px !important;
      padding: 12px 0 !important;
    }

    #fws-header-v2 .fwsv2-mobile-project__media {
      width: 112px !important;
      height: auto !important;
    }

    #fws-header-v2 .fwsv2-mobile-group-title,
    #fws-header-v2 .fwsv2-mobile-project__title {
      font-size: 22px !important;
      line-height: 1.04 !important;
      letter-spacing: -.056em !important;
    }

    #fws-header-v2 .fwsv2-mobile-sublist a,
    #fws-header-v2 .fwsv2-mobile-project__desc,
    #fws-header-v2 .fwsv2-mobile-panel-cta {
      font-size: 15px !important;
      line-height: 1.28 !important;
    }
  }

  #fws-header-v2 .fwsv2-bar::before {
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    z-index: 0 !important;
    pointer-events: none !important;
    opacity: 0 !important;
    background:
      linear-gradient(
        115deg,
        transparent 0%,
        rgba(255, 255, 255, 0) 32%,
        rgba(255, 255, 255, .18) 48%,
        rgba(255, 255, 255, .06) 58%,
        transparent 76%
      ) !important;
    transition: opacity .86s var(--fwsv2-color-ease) !important;
    animation: fwsv2-glass-breathe 16s ease-in-out infinite alternate !important;
  }

  #fws-header-v2.is-scrolled .fwsv2-bar::before,
  #fws-header-v2.is-force-open .fwsv2-bar::before {
    opacity: .16 !important;
  }

  #fws-header-v2 .fwsv2-bar > * {
    position: relative !important;
    z-index: 1 !important;
  }

  @keyframes fwsv2-glass-breathe {
    0% {
      transform: translate3d(-18%, 0, 0) !important;
    }

    100% {
      transform: translate3d(18%, 0, 0) !important;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    #fws-header-v2 .fwsv2-bar::before,
    #fws-header-v2 .fwsv2-mega::before {
      animation: none !important;
    }

    #fws-header-v2 .fwsv2-mobile-toggle svg,
    #fws-header-v2 .fwsv2-mobile-toggle .line,
    #fws-header-v2 .fwsv2-mobile-panel {
      transition: none !important;
    }
  }

/* ---- section ---- */

html,
  body {
    margin: 0 !important;
    padding: 0 !important;
    max-width: 100%;
    overflow-x: clip;
    background: #eef0f2;
  }

  html {
    overflow-y: scroll;
    scrollbar-gutter: stable;
  }

  body {
    overflow-y: auto;
  }

  html.fws-ph-scroll-lock,
  body.fws-ph-scroll-lock {
    overflow-x: clip !important;
    overscroll-behavior: none;
  }

  @supports not (overflow-x: clip) {
    html,
    body {
      overflow-x: hidden;
    }

    html.fws-ph-scroll-lock,
    body.fws-ph-scroll-lock {
      overflow-x: hidden !important;
    }
  }

  .fws-portfolio-hero-shell,
  .fws-portfolio-hero-shell * {
    box-sizing: border-box;
  }

  .fws-portfolio-hero-shell {
    --fws-ph-bg: #eef0f2;
    --fws-ph-ink: #05080d;
    --fws-ph-muted: rgba(11, 27, 51, .58);
    --fws-ph-blue: #088fd3;
    --fws-ph-blue-hover: #0aa1ed;
    --fws-ph-ease: cubic-bezier(.16, 1, .3, 1);
    --fws-ph-custom: cubic-bezier(.98, .54, .5, 1);

    --fws-ph-hero-max: 1400px;
    --fws-ph-hero-x: 24px;

    --fws-ph-title-nudge-x: clamp(-20px, -1.1vw, -6px);
    --fws-ph-title-nudge-y: clamp(18px, 3vh, 38px);
    --fws-ph-side-nudge-x: clamp(-58px, -3vw, -24px);

    --fws-ph-hero-scroll-p: 0;

    position: relative;
    display: block;
    width: 100vw;
    max-width: 100vw;
    min-width: 100vw;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    margin-left: calc(50% - 50vw) !important;
    margin-right: calc(50% - 50vw) !important;
    padding: 0 !important;
    background: var(--fws-ph-bg);
    color: var(--fws-ph-ink);
    font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
    overflow-x: clip;
    overflow-y: visible;
    isolation: isolate;
  }

  .fws-portfolio-hero-shell a {
    color: inherit;
    text-decoration: none;
  }

  .fws-ph-hero {
    position: relative;
    display: block;
    width: 100vw;
    max-width: 100vw;
    min-width: 100vw;
    min-height: 100vh;
    min-height: 100svh;
    margin: 0 !important;
    padding: 0 !important;
    background: var(--fws-ph-bg);
    overflow: hidden;
    isolation: isolate;
  }

  .fws-ph-hero-bg {
    position: absolute;
    inset: -2px;
    z-index: 1;
    opacity: 0;
    visibility: hidden;
    width: auto;
    height: auto;
    transition:
      opacity 900ms var(--fws-ph-ease),
      visibility 900ms var(--fws-ph-ease);
  }

  .fws-portfolio-hero-shell.is-hero-bg-visible .fws-ph-hero-bg {
    opacity: 1;
    visibility: visible;
  }

  .fws-ph-hero-bg img {
    display: block;
    width: 100% !important;
    height: 100% !important;
    min-width: 100%;
    min-height: 100%;
    max-width: none !important;
    object-fit: cover !important;
    object-position: center center;
    transform: scale(1.035);
    transition:
      transform 1400ms var(--fws-ph-ease),
      object-position 2800ms cubic-bezier(.16, 1, .3, 1);
    will-change: transform, object-position;
  }

  .fws-portfolio-hero-shell.is-hero-bg-visible .fws-ph-hero-bg img {
    transform: scale(1.01);
  }

  .fws-portfolio-hero-shell.is-hero-image-lowered .fws-ph-hero-bg img {
    object-position: center calc(50% + 30px);
  }

  .fws-ph-hero-bg__shade {
    position: absolute;
    inset: 0;
    background:
      linear-gradient(
        90deg,
        rgba(0, 0, 0, .34) 0%,
        rgba(0, 0, 0, .16) 45%,
        rgba(0, 0, 0, .10) 100%
      ),
      linear-gradient(
        180deg,
        rgba(0, 0, 0, .06) 0%,
        rgba(0, 0, 0, 0) 48%,
        rgba(0, 0, 0, .38) 100%
      );
  }

  .fws-ph-hero-copy {
    position: absolute;
    inset: 0;
    z-index: 5;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition:
      opacity 700ms var(--fws-ph-ease),
      visibility 700ms var(--fws-ph-ease);
  }

  .fws-portfolio-hero-shell.is-hero-copy-visible .fws-ph-hero-copy {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }

  .fws-ph-hero-copy__content {
    width: min(var(--fws-ph-hero-max), calc(100% - var(--fws-ph-hero-x) * 2));
    margin: 0 auto;
    min-height: 650px;
    height: 100vh;
    height: 100svh;
    position: relative;
    z-index: 2;
  }

  .fws-ph-hero-copy__main {
    position: absolute;
    left: var(--fws-ph-title-nudge-x);
    top: calc(clamp(210px, 30vh, 330px) + var(--fws-ph-title-nudge-y));
    width: min(1120px, 80vw);
  }

  .fws-ph-hero-title {
    max-width: 1120px;
    margin: 0;
    font-size: clamp(50px, 4.8vw, 80px);
    line-height: 1.06;
    letter-spacing: -.07em;
    font-weight: 500;
    color: #ffffff;
    text-shadow: none !important;

    transform: translate3d(0, calc(var(--fws-ph-hero-scroll-p) * -52px), 0);
    filter: blur(calc(var(--fws-ph-hero-scroll-p) * 18px));
    opacity: calc(1 - (var(--fws-ph-hero-scroll-p) * .42));
    transition: filter .08s linear, transform .08s linear, opacity .08s linear;
    will-change: transform, filter, opacity;
  }

  .fws-ph-hero-title,
  .fws-ph-hero-title * {
    text-shadow: none !important;
  }

  .fws-ph-hero-title__line {
    display: block;
    white-space: nowrap;
    padding-bottom: .08em;
  }

  .fws-ph-hero-char {
    display: inline-block;
    white-space: pre;
    transform-origin: 50% 72%;
    opacity: 0;
    transform: translate3d(0, 18px, 0) scale(.985);
    filter: blur(12px);
    transition:
      opacity 520ms var(--fws-ph-ease),
      transform 520ms var(--fws-ph-ease),
      filter 520ms var(--fws-ph-ease);
    will-change: transform, opacity, filter;
  }

  .fws-portfolio-hero-shell.is-hero-copy-visible .fws-ph-hero-char {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
    filter: blur(0);
  }

  .fws-ph-hero-actions {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-top: clamp(34px, 4vh, 54px);

    transform: translate3d(0, calc(var(--fws-ph-hero-scroll-p) * -44px), 0);
    filter: blur(calc(var(--fws-ph-hero-scroll-p) * 16px));
    opacity: calc(1 - (var(--fws-ph-hero-scroll-p) * .46));
    transition: filter .08s linear, transform .08s linear, opacity .08s linear;
    will-change: transform, filter, opacity;
  }

  .fws-ph-hero-actions__inner {
    display: flex;
    align-items: center;
    gap: 14px;
  }

  .fws-ph-btn {
    height: clamp(40px, 2.8vw, 48px);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;

    font-size: clamp(14px, .92vw, 16px);
    line-height: 1.55;
    letter-spacing: -.035em;
    font-weight: 500;

    white-space: nowrap;
    opacity: 0;
    visibility: hidden;
    transform: translate3d(0, 24px, 0);
    filter: blur(12px);
    transition:
      opacity 1050ms var(--fws-ph-ease),
      visibility 1050ms var(--fws-ph-ease),
      transform 1050ms var(--fws-ph-ease),
      filter 1050ms var(--fws-ph-ease),
      background .2s ease,
      border-color .2s ease,
      color .2s ease;
  }

  .fws-portfolio-hero-shell.is-hero-copy-visible .fws-ph-btn {
    opacity: 1;
    visibility: visible;
    transform: translate3d(0, 0, 0);
    filter: blur(0);
  }

  .fws-portfolio-hero-shell.is-hero-copy-visible .fws-ph-btn:nth-child(1) {
    transition-delay: 900ms, 900ms, 900ms, 900ms, 0ms, 0ms, 0ms;
  }

  .fws-portfolio-hero-shell.is-hero-copy-visible .fws-ph-btn:nth-child(2) {
    transition-delay: 980ms, 980ms, 980ms, 980ms, 0ms, 0ms, 0ms;
  }

  .fws-ph-btn:hover {
    transform: translateY(-1px);
  }

  .fws-ph-btn--primary {
    min-width: clamp(220px, 14vw, 276px);
    background: #088fd3;
    color: #ffffff !important;
    box-shadow: 0 14px 34px rgba(8, 143, 211, .28);
  }

  .fws-ph-btn--primary:hover {
    background: #0aa1ed;
    color: #ffffff !important;
  }

  .fws-ph-btn--ghost {
    min-width: clamp(190px, 12vw, 238px);
    background: rgba(255, 255, 255, .04);
    border: 1px solid rgba(255, 255, 255, .18);
    color: rgba(255, 255, 255, .90) !important;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
  }

  .fws-ph-btn--ghost:hover {
    background: rgba(255, 255, 255, .09);
    border-color: rgba(255, 255, 255, .28);
    color: #ffffff !important;
  }

  .fws-ph-hero-side {
    position: absolute;
    right: var(--fws-ph-side-nudge-x);
    bottom: clamp(70px, 10vh, 120px);
    width: clamp(448px, 32vw, 620px);
  }

  .fws-ph-hero-side__line {
    width: min(520px, calc(100% - clamp(28px, 2.4vw, 46px)));
    height: 2px;
    margin-left: clamp(28px, 2.4vw, 46px);
    margin-bottom: clamp(28px, 3.8vh, 44px);
    overflow: visible;
    background: transparent;

    transform: translate3d(0, calc(var(--fws-ph-hero-scroll-p) * -38px), 0);
    filter: blur(calc(var(--fws-ph-hero-scroll-p) * 14px));
    opacity: calc(1 - (var(--fws-ph-hero-scroll-p) * .58));
    transition: filter .08s linear, transform .08s linear, opacity .08s linear;
    will-change: transform, filter, opacity;
  }

  .fws-ph-hero-side__line-motion {
    display: block;
    width: 100%;
    height: 100%;
    opacity: 0;
    visibility: hidden;
    transform: translate3d(0, 24px, 0);
    filter: blur(12px);
    transition:
      opacity 1050ms var(--fws-ph-ease),
      visibility 1050ms var(--fws-ph-ease),
      transform 1050ms var(--fws-ph-ease),
      filter 1050ms var(--fws-ph-ease);
    will-change: transform, filter, opacity;
  }

  .fws-portfolio-hero-shell.is-hero-copy-visible .fws-ph-hero-side__line-motion {
    opacity: 1;
    visibility: visible;
    transform: translate3d(0, 0, 0);
    filter: blur(0);
    transition-delay: 900ms;
  }

  .fws-ph-hero-side__line-fill {
    display: block;
    width: 100%;
    height: 100%;
    background: #088fd3;
    box-shadow: 0 0 18px rgba(8, 143, 211, .38);
    transform: scaleX(0);
    transform-origin: left center;
    opacity: 1;
    transition: transform 1050ms var(--fws-ph-ease);
    will-change: transform;
  }

  .fws-portfolio-hero-shell.is-hero-copy-visible .fws-ph-hero-side__line-fill {
    transform: scaleX(1);
    transition-delay: 900ms;
  }

  .fws-ph-hero-side__text {
    max-width: 520px;
    margin: 0 0 0 clamp(28px, 2.4vw, 46px);
    font-size: clamp(14px, .92vw, 16px);
    line-height: 1.55;
    letter-spacing: -.035em;
    font-weight: 500;
    color: rgba(255,255,255,.74);
    text-shadow: 0 16px 45px rgba(0,0,0,.50);

    transform: translate3d(0, calc(var(--fws-ph-hero-scroll-p) * -46px), 0);
    filter: blur(calc(var(--fws-ph-hero-scroll-p) * 18px));
    opacity: calc(1 - (var(--fws-ph-hero-scroll-p) * .48));
    transition: filter .08s linear, transform .08s linear, opacity .08s linear;
    will-change: transform, filter, opacity;
  }

  .fws-ph-hero-side__text p {
    margin: 0;
    opacity: 0;
    visibility: hidden;
    transform: translate3d(0, 24px, 0);
    filter: blur(12px);
    transition:
      opacity 1050ms var(--fws-ph-ease),
      visibility 1050ms var(--fws-ph-ease),
      transform 1050ms var(--fws-ph-ease),
      filter 1050ms var(--fws-ph-ease);
  }

  .fws-portfolio-hero-shell.is-hero-copy-visible .fws-ph-hero-side__text p {
    opacity: 1;
    visibility: visible;
    transform: translate3d(0, 0, 0);
    filter: blur(0);
    transition-delay: 900ms;
  }

  .fws-ph-intro {
    position: fixed;
    inset: -2px;
    z-index: 50;
    width: auto;
    height: auto;
    background: var(--fws-ph-bg);
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition:
      opacity 900ms var(--fws-ph-ease),
      visibility 900ms var(--fws-ph-ease);
  }

  .fws-portfolio-hero-shell.is-intro-hidden .fws-ph-intro {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
  }

  .fws-ph-main {
    position: relative;
    width: 100vw;
    height: 100vh;
    height: 100svh;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden;
  }

  .fws-ph-card-field {
    position: absolute;
    left: 50%;
    top: 50%;
    z-index: 20;
    width: 0%;
    height: min(46vh, 460px);
    min-height: 280px;
    transform: translate3d(-50%, -50%, 0);
    opacity: 1;
    overflow: visible;
    transition:
      width 1050ms var(--fws-ph-custom),
      height 1050ms var(--fws-ph-ease),
      min-height 1050ms var(--fws-ph-ease),
      opacity 850ms var(--fws-ph-ease),
      transform 1050ms var(--fws-ph-ease);
    will-change: width, height, opacity, transform;
  }

  .fws-portfolio-hero-shell.is-image-open .fws-ph-card-field {
    width: 16vw;
  }

  .fws-portfolio-hero-shell.is-dior-fullscreen .fws-ph-card-field {
    width: calc(100vw + 4px);
    height: calc(100vh + 4px);
    height: calc(100svh + 4px);
    min-height: calc(100vh + 4px);
    min-height: calc(100svh + 4px);
    transform: translate3d(-50%, -50%, 0);
    overflow: hidden;
  }

  .fws-ph-card {
    position: absolute;
    inset: 0;
    background: #ffffff;
    overflow: hidden;
    box-shadow: none;
    transform-origin: center center;
    transition:
      transform 1150ms var(--fws-ph-ease),
      opacity 850ms var(--fws-ph-ease),
      filter 850ms var(--fws-ph-ease);
    will-change: transform, opacity, filter;
  }

  .fws-ph-card img {
    display: block;
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    object-fit: cover !important;
    object-position: center center;
  }

  .fws-ph-card--front {
    z-index: 10;
  }

  .fws-ph-card--back-1 {
    z-index: 7;
  }

  .fws-ph-card--back-2 {
    z-index: 6;
  }

  .fws-ph-card--back-3 {
    z-index: 5;
  }

  .fws-portfolio-hero-shell.is-fan-open .fws-ph-card--back-1 {
    transform: rotate(5deg);
  }

  .fws-portfolio-hero-shell.is-fan-open .fws-ph-card--back-2 {
    transform: rotate(10deg);
  }

  .fws-portfolio-hero-shell.is-fan-open .fws-ph-card--back-3 {
    transform: rotate(15deg);
  }

  .fws-portfolio-hero-shell.is-stack-merge .fws-ph-card--back-1,
  .fws-portfolio-hero-shell.is-stack-merge .fws-ph-card--back-2,
  .fws-portfolio-hero-shell.is-stack-merge .fws-ph-card--back-3 {
    transform: rotate(0deg) scale(1);
    opacity: .92;
  }

  .fws-portfolio-hero-shell.is-dior-fullscreen .fws-ph-card--back-1,
  .fws-portfolio-hero-shell.is-dior-fullscreen .fws-ph-card--back-2,
  .fws-portfolio-hero-shell.is-dior-fullscreen .fws-ph-card--back-3 {
    transform: rotate(0deg) scale(1);
    opacity: 0;
    filter: blur(2px);
  }

  .fws-portfolio-hero-shell.is-dior-fullscreen .fws-ph-card--front {
    transform: scale(1);
    opacity: 1;
  }

  .fws-ph-big-text {
    position: absolute;
    left: 5vw;
    right: 5vw;
    top: 50%;
    z-index: 8;
    transform: translateY(-50%);
    pointer-events: none;
  }

  .fws-ph-big-text__line {
    overflow: hidden;
  }

  .fws-ph-big-text__line--center {
    text-align: center;
  }

  .fws-ph-big-text__line--right {
    text-align: right;
  }

  .fws-ph-big-text h2 {
    margin: 0;
    color: var(--fws-ph-ink);
    font-size: clamp(58px, 11vw, 180px);
    line-height: .88;
    letter-spacing: -0.09em;
    font-weight: 500;
    transform: translateY(120%) rotate(6deg);
    opacity: 0;
    transition:
      transform 800ms var(--fws-ph-ease),
      opacity 800ms var(--fws-ph-ease);
  }

  .fws-portfolio-hero-shell.is-text-in .fws-ph-big-text h2 {
    transform: translateY(0) rotate(0deg);
    opacity: 1;
  }

  .fws-portfolio-hero-shell.is-text-out .fws-ph-big-text h2 {
    transform: translateY(-120%) rotate(0deg);
    opacity: 0;
    transition-duration: 420ms;
    transition-timing-function: cubic-bezier(.7, 0, .84, 0);
  }

  @media (max-width: 1200px) {
    .fws-portfolio-hero-shell {
      --fws-ph-hero-max: 1400px;
      --fws-ph-hero-x: 24px;
      --fws-ph-title-nudge-x: 0px;
      --fws-ph-title-nudge-y: 0px;
      --fws-ph-side-nudge-x: 0px;
    }

    .fws-ph-hero-copy__main {
      top: 228px;
      width: min(920px, 82vw);
    }

    .fws-ph-hero-title {
      max-width: 1000px;
      font-size: clamp(42px, 4.35vw, 56px);
      line-height: 1.06;
      letter-spacing: -.07em;
    }

    .fws-ph-btn {
      height: 38px;
    }

    .fws-ph-hero-side {
      bottom: 56px;
      width: 448px;
    }

    .fws-ph-hero-side__text {
      max-width: 410px;
      margin-left: 34px;
      font-size: 14px;
    }
  }

  @media (max-width: 1024px) {
    .fws-portfolio-hero-shell {
      --fws-ph-hero-x: 24px;
    }

    .fws-ph-hero-copy__content {
      width: calc(100% - var(--fws-ph-hero-x) * 2);
    }

    .fws-ph-hero-copy__main {
      width: 100%;
      top: 185px;
    }

    .fws-ph-hero-title {
      max-width: 100%;
      font-size: clamp(34px, 5.4vw, 52px);
      line-height: 1.07;
    }

    .fws-ph-hero-side {
      left: 0;
      right: auto;
      bottom: 72px;
      width: min(520px, 100%);
    }

    .fws-ph-hero-side__line {
      width: 100%;
      max-width: 520px;
      margin-left: 0;
    }

    .fws-ph-hero-side__text {
      margin-left: 0;
      max-width: 520px;
    }
  }

  @media (max-width: 870px) {
    .fws-ph-card-field {
      height: 42vh;
      min-height: 260px;
    }

    .fws-portfolio-hero-shell.is-image-open .fws-ph-card-field {
      width: 30vw;
    }

    .fws-portfolio-hero-shell.is-dior-fullscreen .fws-ph-card-field {
      width: calc(100vw + 4px);
      height: calc(100vh + 4px);
      height: calc(100svh + 4px);
      min-height: calc(100vh + 4px);
      min-height: calc(100svh + 4px);
    }
  }

  @media (max-width: 640px) {
    .fws-portfolio-hero-shell {
      --fws-ph-hero-x: 16px;
      --fws-ph-mobile-hero-h: max(410px, calc(100svh - 310px));
    }

    .fws-portfolio-hero-shell:not(.is-intro-finished) {
      position: relative;
      z-index: 999998;
      min-height: 100dvh;
      background: var(--fws-ph-bg);
    }

    .fws-ph-intro,
    .fws-ph-main {
      width: 100vw;
      height: 100dvh;
      min-height: 100dvh;
    }

    .fws-ph-intro {
      inset: 0;
      z-index: 999998;
      background: var(--fws-ph-bg);
    }

    .fws-portfolio-hero-shell.is-intro-finished .fws-ph-intro {
      display: none;
    }

    .fws-ph-card-field {
      transition:
        top 900ms var(--fws-ph-ease),
        width 900ms var(--fws-ph-custom),
        height 900ms var(--fws-ph-ease),
        min-height 900ms var(--fws-ph-ease),
        opacity 850ms var(--fws-ph-ease),
        transform 900ms var(--fws-ph-ease);
    }

    .fws-portfolio-hero-shell.is-image-open.is-dior-fullscreen .fws-ph-card-field {
      top: calc(var(--fws-ph-mobile-hero-h) / 2);
      width: calc(100vw + 4px);
      height: var(--fws-ph-mobile-hero-h);
      min-height: var(--fws-ph-mobile-hero-h);
      overflow: hidden;
    }

    .fws-ph-card--front img {
      object-position: center center !important;
      transform: scale(1.08);
      transition: transform 1400ms var(--fws-ph-ease);
    }

    .fws-portfolio-hero-shell.is-hero-bg-visible .fws-ph-card--front img {
      transform: scale(1.01);
    }

    .fws-ph-hero-bg img {
      object-position: center center !important;
      transform: scale(1.08);
    }

    .fws-portfolio-hero-shell.is-hero-bg-visible .fws-ph-hero-bg img {
      transform: scale(1.01);
    }

    .fws-portfolio-hero-shell.is-hero-image-lowered .fws-ph-hero-bg img {
      object-position: center center !important;
    }

    .fws-ph-hero,
    .fws-ph-hero-copy__content {
      min-height: 410px;
      height: var(--fws-ph-mobile-hero-h);
    }

    .fws-ph-hero-copy__content {
      width: calc(100% - var(--fws-ph-hero-x) * 2);
    }

    .fws-ph-hero-copy__main {
      top: 154px;
    }

    .fws-ph-hero-title {
      font-size: clamp(31.5px, 8vw, 44px);
      line-height: 1.08;
      letter-spacing: -.058em;
    }

    .fws-ph-hero-title__line {
      white-space: normal;
    }

    .fws-ph-hero-actions {
      display: none;
    }

    .fws-ph-hero-actions__inner {
      width: 100%;
      flex-direction: column;
      align-items: stretch;
    }

    .fws-ph-btn,
    .fws-ph-btn--primary,
    .fws-ph-btn--ghost {
      width: 100%;
      min-width: 0;
    }

    .fws-ph-hero-side {
      bottom: 52px;
    }

    .fws-ph-hero-side__line {
      width: 100%;
      margin-left: 0;
      margin-bottom: 22px;
    }

    .fws-ph-hero-side__text {
      max-width: 100%;
      font-size: 16.3px;
      line-height: 1.55;
      letter-spacing: -.035em;
      color: rgba(255,255,255,.74);
    }
  }

  @media (max-width: 479px) {
    .fws-ph-card-field {
      height: 38vh;
      min-height: 230px;
    }

    .fws-portfolio-hero-shell.is-image-open .fws-ph-card-field {
      width: 48vw;
    }

    .fws-ph-big-text {
      left: 7vw;
      right: 7vw;
    }

    .fws-ph-big-text h2 {
      font-size: clamp(52px, 16vw, 92px);
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .fws-ph-hero-bg,
    .fws-ph-hero-bg img,
    .fws-ph-intro,
    .fws-ph-card-field,
    .fws-ph-card,
    .fws-ph-big-text h2,
    .fws-ph-hero-copy,
    .fws-ph-hero-title,
    .fws-ph-hero-char,
    .fws-ph-hero-actions,
    .fws-ph-btn,
    .fws-ph-hero-side__line,
    .fws-ph-hero-side__line-motion,
    .fws-ph-hero-side__line-fill,
    .fws-ph-hero-side__text,
    .fws-ph-hero-side__text p {
      transition: none !important;
      animation: none !important;
      transform: none !important;
      filter: none !important;
      opacity: 1 !important;
      visibility: visible !important;
    }
  }

/* ---- section ---- */

html,
  body {
    max-width: 100%;
    overflow-x: clip;
  }

  @supports not (overflow-x: clip) {
    html,
    body {
      overflow-x: hidden;
    }
  }

  .fws-portfolio-projects,
  .fws-portfolio-projects * {
    box-sizing: border-box;
  }

  .fws-portfolio-projects {
    --fws-pp-bg: #eef0f2;
    --fws-pp-ink: #0b1b33;
    --fws-pp-muted: #66758d;
    --fws-pp-blue: #088fd3;
    --fws-pp-blue-hover: #0aa1ed;
    --fws-pp-soft: rgba(11, 27, 51, .23);
    --fws-pp-max: 1400px;
    --fws-pp-ease: cubic-bezier(.16, 1, .3, 1);

    --fws-title-reveal-opacity: 0;
    --fws-title-reveal-blur: 22px;
    --fws-title-reveal-y: 48px;

    --fws-subtitle-reveal-opacity: 0;
    --fws-subtitle-reveal-blur: 20px;
    --fws-subtitle-reveal-y: 42px;

    position: relative;
    z-index: 10;
    width: 100vw;
    max-width: 100vw;
    min-height: 100vh;
    min-height: 100svh;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    padding: clamp(86px, 9vw, 138px) 24px clamp(100px, 10vw, 150px);
    background: var(--fws-pp-bg);
    color: var(--fws-pp-ink);
    font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
    overflow: hidden;
    isolation: isolate;
  }

  .fws-portfolio-projects a {
    color: inherit;
    text-decoration: none;
  }

  .fws-portfolio-projects__wrap {
    position: relative;
    z-index: 2;
    width: min(var(--fws-pp-max), 100%);
    margin: 0 auto;
  }

  .fws-portfolio-projects__head {
    display: block;
    width: 100%;
    margin-bottom: clamp(52px, 5.2vw, 82px);
  }

  .fws-portfolio-projects__title-block {
    display: block;
    max-width: 980px;
  }

  .fws-portfolio-projects__title {
    margin: 0;
    padding: 0;
    color: #05080d;
    font-size: clamp(34px, 4.15vw, 68px);
    line-height: 1.03;
    letter-spacing: -0.072em;
    font-weight: 500;

    opacity: var(--fws-title-reveal-opacity);
    filter: blur(var(--fws-title-reveal-blur));
    transform: translate3d(0, var(--fws-title-reveal-y), 0);
    transition:
      opacity .08s linear,
      filter .08s linear,
      transform .08s linear;
    will-change: opacity, filter, transform;
  }

  .fws-portfolio-projects__title span {
    display: inline;
    color: var(--fws-pp-soft);
  }

  .fws-portfolio-projects__subtitle {
    max-width: 560px;
    margin: clamp(22px, 2.2vw, 34px) 0 0;
    color: var(--fws-pp-muted);
    font-size: clamp(15px, 1.08vw, 17px);
    line-height: 1.42;
    letter-spacing: -0.035em;
    font-weight: 500;

    opacity: var(--fws-subtitle-reveal-opacity);
    filter: blur(var(--fws-subtitle-reveal-blur));
    transform: translate3d(0, var(--fws-subtitle-reveal-y), 0);
    transition:
      opacity .08s linear,
      filter .08s linear,
      transform .08s linear;
    will-change: opacity, filter, transform;
  }

  .fws-portfolio-projects__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: clamp(18px, 2.15vw, 34px);
    row-gap: clamp(58px, 5.8vw, 96px);
    align-items: start;
  }

  .fws-portfolio-card {
    position: relative;
    display: block;
    min-width: 0;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    color: var(--fws-pp-ink);
    opacity: 0;
    transform: translate3d(0, 34px, 0);
    transition:
      opacity .65s var(--fws-pp-ease),
      transform .65s var(--fws-pp-ease);
  }

  .fws-portfolio-card.is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }

  .fws-portfolio-card__link {
    position: relative;
    display: block;
    min-width: 0;
    color: var(--fws-pp-ink);
    transform: none !important;
  }

  .fws-portfolio-card__media {
    display: block;
    width: 100%;
    background: transparent;
    border-radius: 0;
    overflow: hidden;
  }

  .fws-portfolio-card__media img {
    display: block;
    width: 100%;
    height: auto;
    object-fit: contain;
    object-position: center center;
    border-radius: 0;
    transition: transform 300ms var(--fws-pp-ease);
  }

  .fws-portfolio-card__body {
    display: block;
    padding-top: 16px;
    background: transparent;
  }

  .fws-portfolio-card__title {
    display: block;
    max-width: 520px;
    margin: 0;
    color: var(--fws-pp-ink);
    font-size: clamp(21px, 1.55vw, 30px);
    line-height: 1.08;
    letter-spacing: -0.058em;
    font-weight: 500;
  }

  .fws-portfolio-card__desc {
    display: block;
    max-width: 360px;
    margin: 8px 0 0;
    color: var(--fws-pp-muted);
    font-size: clamp(15px, 1.08vw, 17px);
    line-height: 1.28;
    letter-spacing: -0.035em;
    font-weight: 500;
  }

  .fws-portfolio-card__action {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-top: 17px;
    color: var(--fws-pp-blue);
    font-size: clamp(11px, .72vw, 14px);
    line-height: 1;
    letter-spacing: -0.025em;
    font-weight: 800;
    transition:
      color 300ms var(--fws-pp-ease),
      transform 300ms var(--fws-pp-ease);
  }

  .fws-portfolio-card__action svg {
    width: 15px;
    height: 15px;
    stroke-width: 2.5;
    flex: 0 0 auto;
    transition: transform 300ms var(--fws-pp-ease);
  }

  @media (hover: hover) {
    .fws-portfolio-card__link:hover .fws-portfolio-card__action {
      color: var(--fws-pp-blue-hover);
      transform: translateY(-1px);
    }

    .fws-portfolio-card__link:hover .fws-portfolio-card__action svg {
      transform: translateX(2px);
    }
  }

  @media (max-width: 1320px) {
    .fws-portfolio-projects__title {
      font-size: clamp(32px, 3.55vw, 58px);
    }

    .fws-portfolio-projects__grid {
      column-gap: clamp(18px, 2vw, 30px);
      row-gap: clamp(54px, 5.4vw, 90px);
    }
  }

  @media (max-width: 1180px) {
    .fws-portfolio-projects__subtitle {
      max-width: 720px;
    }

    .fws-portfolio-projects__grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      column-gap: 28px;
      row-gap: 66px;
    }

    .fws-portfolio-projects__title {
      font-size: clamp(32px, 5.2vw, 56px);
    }

    .fws-portfolio-card__desc {
      max-width: 520px;
    }
  }

  @media (max-width: 760px) {
    .fws-portfolio-projects {
      padding: 76px 18px 86px;
    }

    .fws-portfolio-projects__wrap {
      width: 100%;
    }

    .fws-portfolio-projects__head {
      margin-bottom: 48px;
    }

    .fws-portfolio-projects__title {
      font-size: clamp(32px, 9.6vw, 50px);
      line-height: 1.02;
      white-space: nowrap;
    }

    .fws-portfolio-projects__title span {
      display: block;
    }

    .fws-portfolio-projects__subtitle {
      max-width: 100%;
      margin-top: 22px;
    }

    .fws-portfolio-projects__grid {
      grid-template-columns: 1fr;
      row-gap: 52px;
    }

    .fws-portfolio-card__title {
      font-size: clamp(22px, 6.4vw, 30px);
      line-height: 1.08;
      letter-spacing: -0.058em;
      font-weight: 500;
    }

    .fws-portfolio-card__desc {
      max-width: 100%;
      font-size: clamp(15px, 1.08vw, 17px);
      line-height: 1.28;
      letter-spacing: -0.035em;
      font-weight: 500;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .fws-portfolio-projects {
      --fws-title-reveal-opacity: 1 !important;
      --fws-title-reveal-blur: 0px !important;
      --fws-title-reveal-y: 0px !important;

      --fws-subtitle-reveal-opacity: 1 !important;
      --fws-subtitle-reveal-blur: 0px !important;
      --fws-subtitle-reveal-y: 0px !important;
    }

    .fws-portfolio-projects__title,
    .fws-portfolio-projects__subtitle,
    .fws-portfolio-card,
    .fws-portfolio-card__action,
    .fws-portfolio-card__action svg,
    .fws-portfolio-card__media img {
      transition: none !important;
    }

    .fws-portfolio-projects__title,
    .fws-portfolio-projects__subtitle {
      opacity: 1 !important;
      filter: none !important;
      transform: none !important;
    }

    .fws-portfolio-card {
      opacity: 1 !important;
      transform: none !important;
    }
  }

/* ---- section ---- */

.fws-cta-banner,
  .fws-cta-banner * {
    box-sizing: border-box;
  }

  .fws-cta-banner {
    --fws-ink: #ffffff;
    --fws-muted: rgba(229, 241, 249, .72);
    --fws-blue: #088fd3;
    --fws-blue-hover: #0aa1ed;
    --fws-navy: #0d233a;
    --fws-deep: #051421;
    --fws-border: rgba(255,255,255,.13);
    --fws-glass: rgba(255,255,255,.075);
    --fws-max: 1400px;
    --fws-ease: cubic-bezier(.16, 1, .3, 1);

    --fws-title-reveal-opacity: 0;
    --fws-title-reveal-blur: 22px;
    --fws-title-reveal-y: 48px;

    --fws-text-reveal-opacity: 0;
    --fws-text-reveal-blur: 18px;
    --fws-text-reveal-y: 36px;

    --fws-actions-reveal-opacity: 0;
    --fws-actions-reveal-blur: 18px;
    --fws-actions-reveal-y: 34px;

    position: relative;
    width: 100vw;
    max-width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    overflow: hidden;
    isolation: isolate;
    padding: clamp(82px, 7.2vw, 116px) 24px;
    background:
      radial-gradient(circle at var(--mx, 50%) var(--my, 48%), rgba(8,143,211,.24), transparent 28%),
      radial-gradient(circle at 12% 8%, rgba(255,255,255,.10), transparent 32%),
      radial-gradient(circle at 86% 18%, rgba(8,143,211,.20), transparent 34%),
      linear-gradient(135deg, #061522 0%, #0d233a 46%, #102e4b 100%);
    font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
    color: var(--fws-ink);
  }

  .fws-cta-banner a {
    color: inherit;
    text-decoration: none;
  }

  .fws-cta-banner__decor {
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    overflow: hidden;
  }

  .fws-cta-banner__grid {
    position: absolute;
    inset: 0;
    opacity: .18;
    background-image:
      linear-gradient(rgba(255,255,255,.07) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.07) 1px, transparent 1px);
    background-size: 54px 54px;
    mask-image: radial-gradient(circle at 50% 45%, #000 0%, transparent 72%);
    -webkit-mask-image: radial-gradient(circle at 50% 45%, #000 0%, transparent 72%);
  }

  .fws-cta-banner__orb {
    position: absolute;
    width: clamp(360px, 34vw, 680px);
    aspect-ratio: 1;
    border-radius: 999px;
    filter: blur(18px);
    opacity: .42;
    transform: translate3d(0,0,0);
  }

  .fws-cta-banner__orb--one {
    left: -12%;
    top: -80%;
    background: radial-gradient(circle, rgba(8,143,211,.44), transparent 66%);
    animation: fwsCtaBannerFloatOne 12s ease-in-out infinite alternate;
  }

  .fws-cta-banner__orb--two {
    right: -16%;
    bottom: -90%;
    background: radial-gradient(circle, rgba(255,255,255,.18), transparent 68%);
    animation: fwsCtaBannerFloatTwo 14s ease-in-out infinite alternate;
  }

  .fws-cta-banner__inner {
    position: relative;
    z-index: 2;
    width: min(var(--fws-max), 100%);
    margin: 0 auto;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: clamp(30px, 5vw, 74px);
  }

  .fws-cta-banner__copy {
    max-width: 1040px;
  }

  .fws-cta-banner__title {
    max-width: 1180px;
    margin: 0;
    padding: 0;
    color: #ffffff;
    font-size: clamp(34px, 4.15vw, 68px);
    line-height: 1.03;
    letter-spacing: -0.072em;
    font-weight: 500;
    text-shadow: 0 22px 70px rgba(0,0,0,.30);

    opacity: var(--fws-title-reveal-opacity);
    filter: blur(var(--fws-title-reveal-blur));
    transform: translate3d(0, var(--fws-title-reveal-y), 0);
    transition:
      opacity .08s linear,
      filter .08s linear,
      transform .08s linear;
    will-change: opacity, filter, transform;
  }

  .fws-cta-banner__title span {
    display: inline-block;
    color: #c7cbd0;
  }

  .fws-cta-banner__text {
    max-width: 760px;
    margin: clamp(18px, 2vw, 24px) 0 0;
    font-size: clamp(15px, 1.05vw, 18px);
    line-height: 1.58;
    letter-spacing: -0.04em;
    font-weight: 500;
    color: var(--fws-muted);

    opacity: var(--fws-text-reveal-opacity);
    filter: blur(var(--fws-text-reveal-blur));
    transform: translate3d(0, var(--fws-text-reveal-y), 0);
    transition:
      opacity .08s linear,
      filter .08s linear,
      transform .08s linear;
    will-change: opacity, filter, transform;
  }

  .fws-cta-banner__actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-direction: row;
    gap: 14px;

    opacity: var(--fws-actions-reveal-opacity);
    filter: blur(var(--fws-actions-reveal-blur));
    transform: translate3d(0, var(--fws-actions-reveal-y), 0);
    transition:
      opacity .08s linear,
      filter .08s linear,
      transform .08s linear;
    will-change: opacity, filter, transform;
  }

  .fws-cta-banner__btn {
    height: clamp(40px, 2.8vw, 48px);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;

    font-size: clamp(14px, .92vw, 16px);
    line-height: 1.55;
    letter-spacing: -.035em;
    font-weight: 500;

    white-space: nowrap;
    transition:
      transform .2s ease,
      background .2s ease,
      border-color .2s ease;
  }

  .fws-cta-banner__btn:hover {
    transform: translateY(-1px);
  }

  .fws-cta-banner__btn--primary {
    min-width: clamp(220px, 14vw, 276px);
    background: #088fd3;
    color: #fff;
    box-shadow: 0 14px 34px rgba(8, 143, 211, .28);
  }

  .fws-cta-banner__btn--primary:hover {
    background: #0aa1ed;
  }

  .fws-cta-banner__btn--ghost {
    min-width: clamp(158px, 9.8vw, 198px);
    background: rgba(255, 255, 255, .04);
    border: 1px solid rgba(255, 255, 255, .18);
    color: rgba(255,255,255,.90);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
  }

  .fws-cta-banner__btn--ghost:hover {
    background: rgba(255, 255, 255, .09);
    border-color: rgba(255,255,255,.28);
    color: #fff;
  }

  @keyframes fwsCtaBannerFloatOne {
    from {
      transform: translate3d(0, 0, 0) scale(1);
    }

    to {
      transform: translate3d(5%, 8%, 0) scale(1.08);
    }
  }

  @keyframes fwsCtaBannerFloatTwo {
    from {
      transform: translate3d(0, 0, 0) scale(1);
    }

    to {
      transform: translate3d(-6%, -7%, 0) scale(1.06);
    }
  }

  @media (min-width: 1025px) and (max-height: 820px) {
    .fws-cta-banner__title {
      font-size: clamp(34px, 3.75vw, 60px);
    }
  }

  @media (max-width: 1320px) {
    .fws-cta-banner__title {
      max-width: 1040px;
      font-size: clamp(32px, 3.55vw, 58px);
      line-height: 1.03;
      letter-spacing: -0.072em;
      font-weight: 500;
    }
  }

  @media (max-width: 1180px) {
    .fws-cta-banner__title {
      max-width: 100%;
      font-size: clamp(32px, 5.2vw, 56px);
      line-height: 1.03;
      letter-spacing: -0.072em;
      font-weight: 500;
    }
  }

  @media (max-width: 980px) {
    .fws-cta-banner__inner {
      grid-template-columns: 1fr;
      gap: 32px;
    }

    .fws-cta-banner__actions {
      justify-content: flex-start;
      flex-wrap: wrap;
    }

    .fws-cta-banner__title span {
      display: block;
    }
  }

  @media (max-width: 720px) {
    .fws-cta-banner {
      padding: 88px 18px 96px;
    }

    .fws-cta-banner__title {
      max-width: 100%;
      font-size: clamp(32px, 9.6vw, 50px);
      line-height: 1.02;
      letter-spacing: -0.072em;
      font-weight: 500;
    }

    .fws-cta-banner__text {
      margin-top: 22px;
      font-size: 16px;
      line-height: 1.58;
    }

    .fws-cta-banner__actions {
      width: 100%;
      flex-direction: column;
      align-items: stretch;
      gap: 14px;
    }

    .fws-cta-banner__btn,
    .fws-cta-banner__btn--primary,
    .fws-cta-banner__btn--ghost {
      width: 100%;
      min-width: 0;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .fws-cta-banner {
      --fws-title-reveal-opacity: 1 !important;
      --fws-title-reveal-blur: 0px !important;
      --fws-title-reveal-y: 0px !important;

      --fws-text-reveal-opacity: 1 !important;
      --fws-text-reveal-blur: 0px !important;
      --fws-text-reveal-y: 0px !important;

      --fws-actions-reveal-opacity: 1 !important;
      --fws-actions-reveal-blur: 0px !important;
      --fws-actions-reveal-y: 0px !important;
    }

    .fws-cta-banner__title,
    .fws-cta-banner__text,
    .fws-cta-banner__actions,
    .fws-cta-banner__btn,
    .fws-cta-banner__orb {
      animation: none !important;
      transition: none !important;
    }

    .fws-cta-banner__title,
    .fws-cta-banner__text,
    .fws-cta-banner__actions {
      opacity: 1 !important;
      filter: none !important;
      transform: none !important;
    }
  }

/* ---- section ---- */

.fws-reviews-minimal,
  .fws-reviews-minimal * {
    box-sizing: border-box;
  }

  .fws-reviews-minimal {
    --fws-rm-ink: #0b1b33;
    --fws-rm-muted: #66758d;
    --fws-rm-blue: #088fd3;
    --fws-rm-bg: #eef0f2;
    --fws-rm-line: rgba(11, 27, 51, .12);
    --fws-rm-max: 1400px;
    --fws-rm-ease: cubic-bezier(.16, 1, .3, 1);

    --fws-title-reveal-opacity: 0;
    --fws-title-reveal-blur: 22px;
    --fws-title-reveal-y: 48px;

    position: relative;
    width: 100vw;
    max-width: 100vw;
    min-height: 100svh;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    overflow: hidden;
    isolation: isolate;
    background: var(--fws-rm-bg);
    color: var(--fws-rm-ink);
    font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  }

  .fws-reviews-minimal__inner {
    width: 100%;
    min-height: 100svh;
    margin: 0 auto;
    padding: clamp(70px, 6.2vw, 104px) 0 clamp(78px, 7vw, 118px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: clamp(48px, 4.8vw, 76px);
  }

  .fws-reviews-minimal__head {
    width: min(var(--fws-rm-max), calc(100vw - 44px));
  }

  .fws-reviews-minimal__title {
    max-width: 1400px;
    margin: 0;
    color: #05080d;
    font-size: clamp(34px, 4.15vw, 68px);
    line-height: 1.03;
    letter-spacing: -0.072em;
    font-weight: 500;
    white-space: nowrap;

    opacity: var(--fws-title-reveal-opacity);
    filter: blur(var(--fws-title-reveal-blur));
    transform: translate3d(0, var(--fws-title-reveal-y), 0);
    transition:
      opacity .08s linear,
      filter .08s linear,
      transform .08s linear;
    will-change: opacity, filter, transform;
  }

  .fws-reviews-minimal__title span {
    display: inline;
    color: rgba(11, 27, 51, .23);
  }

  .fws-reviews-minimal__stage {
    width: min(var(--fws-rm-max), calc(100vw - 44px));
    height: min(690px, 68svh);
    min-height: 540px;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(22px, 2.2vw, 40px);
    overflow: hidden;
    opacity: 0;
    transform: translateY(34px);
    transition:
      opacity 900ms var(--fws-rm-ease),
      transform 900ms var(--fws-rm-ease);

    mask-image: linear-gradient(
      to bottom,
      transparent 0%,
      black 12%,
      black 84%,
      transparent 100%
    );
    -webkit-mask-image: linear-gradient(
      to bottom,
      transparent 0%,
      black 12%,
      black 84%,
      transparent 100%
    );
  }

  .fws-reviews-minimal.is-visible .fws-reviews-minimal__stage {
    opacity: 1;
    transform: translateY(0);
  }

  .fws-reviews-minimal__col {
    min-width: 0;
    overflow: visible;
  }

  .fws-reviews-minimal__col:nth-child(2) {
    transform: translateY(-120px);
  }

  .fws-reviews-minimal__col:nth-child(3) {
    transform: translateY(-54px);
  }

  .fws-reviews-minimal__track {
    display: flex;
    flex-direction: column;
    gap: clamp(16px, 1.6vw, 24px);
    padding-bottom: clamp(16px, 1.6vw, 24px);
    animation: fwsReviewsMinimalUp var(--fws-review-duration, 44s) linear infinite;
    will-change: transform;
    transform: translate3d(0,0,0);
    backface-visibility: hidden;
  }

  .fws-review-minimal {
    position: relative;
    width: 100%;
    min-height: 200px;
    padding: clamp(22px, 2vw, 30px);
    border-radius: 0;
    border-top: 1px solid var(--fws-rm-line);
    background: transparent;
  }

  .fws-review-minimal::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 74%;
    height: 1px;
    background: linear-gradient(
      90deg,
      rgba(8,143,211,.36),
      rgba(8,143,211,0)
    );
    opacity: .65;
  }

  .fws-review-minimal--large {
    min-height: 320px;
  }

  .fws-review-minimal footer {
    display: flex;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 12px;
    margin: 0 0 clamp(18px, 1.8vw, 24px);
    width: 100%;
  }

  .fws-review-minimal__avatar {
    width: 38px;
    height: 38px;
    flex: 0 0 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: #ffffff;
    color: #0b1b33;
    font-size: 13px;
    line-height: 1;
    font-weight: 800;
    margin-top: 7px;
    overflow: hidden;
    border: 1px solid rgba(11, 27, 51, .10);
    box-shadow: 0 8px 18px rgba(11, 27, 51, .08);
  }

  .fws-review-minimal__avatar img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
  }

  .fws-review-minimal__person {
    min-width: 0;
    flex: 1 1 auto;
    margin-left: 7px;
  }

  .fws-review-minimal footer strong {
    display: block;
    max-width: 520px;
    margin: 0;
    color: var(--fws-rm-ink);
    font-size: clamp(15px, 1.05vw, 17.5px);
    line-height: 1.6;
    letter-spacing: -0.035em;
    font-weight: 500;
  }

  .fws-review-minimal footer small {
    display: block;
    max-width: 520px;
    margin-top: 0;
    color: rgba(11, 27, 51, .70);
    font-size: clamp(14px, .98vw, 16px);
    line-height: 1.62;
    letter-spacing: -0.035em;
    font-weight: 500;
  }

  .fws-review-minimal__stars {
    flex: 0 0 auto;
    margin: 12px 0 0;
    color: var(--fws-rm-blue);
    font-size: 12px;
    line-height: 1;
    letter-spacing: .10em;
    font-weight: 800;
    white-space: nowrap;
  }

  .fws-review-minimal p {
    margin: 0;
    color: rgba(11, 27, 51, .70);
    font-size: clamp(14px, .98vw, 16px);
    line-height: 1.62;
    letter-spacing: -0.035em;
    font-weight: 500;
  }

  @keyframes fwsReviewsMinimalUp {
    from {
      transform: translate3d(0, 0, 0);
    }

    to {
      transform: translate3d(0, calc(-1 * var(--fws-scroll-distance, 50%)), 0);
    }
  }

  @media (max-width: 1180px) {
    .fws-reviews-minimal__stage {
      width: min(980px, calc(100vw - 44px));
      height: 640px;
      min-height: 520px;
      gap: clamp(18px, 2vw, 32px);
    }

    .fws-reviews-minimal__head {
      width: min(980px, calc(100vw - 44px));
    }
  }

  @media (max-width: 860px) {
    .fws-reviews-minimal__inner {
      padding: 76px 18px 82px;
      gap: 44px;
    }

    .fws-reviews-minimal__head {
      width: 100%;
    }

    .fws-reviews-minimal__title {
      max-width: 100%;
      font-size: clamp(32px, 9.6vw, 50px);
      line-height: 1.02;
      letter-spacing: -0.072em;
      font-weight: 500;
      white-space: normal;
    }

    .fws-reviews-minimal__title span {
      display: inline;
    }

    .fws-reviews-minimal__stage {
      width: 100%;
      height: 590px;
      min-height: 500px;
      grid-template-columns: 1fr;
    }

    .fws-reviews-minimal__col:nth-child(2),
    .fws-reviews-minimal__col:nth-child(3) {
      display: none;
    }

    .fws-review-minimal,
    .fws-review-minimal--large {
      min-height: auto;
      padding: 24px 0;
    }

    .fws-review-minimal footer {
      gap: 12px;
      margin-bottom: 20px;
    }

    .fws-review-minimal__person {
      margin-left: 7px;
    }

    .fws-review-minimal footer strong {
      font-size: 15.5px;
      line-height: 1.58;
      letter-spacing: -0.035em;
      font-weight: 500;
    }

    .fws-review-minimal footer small {
      font-size: 15px;
      line-height: 1.58;
      letter-spacing: -0.035em;
      font-weight: 500;
    }

    .fws-review-minimal__avatar {
      margin-top: 7px;
    }

    .fws-review-minimal__stars {
      margin-top: 12px;
      font-size: 12px;
    }
  }

  @media (max-width: 520px) {
    .fws-review-minimal footer {
      gap: 10px;
    }

    .fws-review-minimal__avatar {
      width: 36px;
      height: 36px;
      flex-basis: 36px;
      margin-top: 7px;
    }

    .fws-review-minimal__avatar img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center center;
    }

    .fws-review-minimal__person {
      margin-left: 6px;
    }

    .fws-review-minimal__stars {
      font-size: 11px;
      letter-spacing: .08em;
      margin-top: 12px;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .fws-reviews-minimal {
      --fws-title-reveal-opacity: 1 !important;
      --fws-title-reveal-blur: 0px !important;
      --fws-title-reveal-y: 0px !important;
    }

    .fws-reviews-minimal__title,
    .fws-reviews-minimal__stage,
    .fws-reviews-minimal__track {
      animation: none !important;
      transition: none !important;
    }

    .fws-reviews-minimal__title,
    .fws-reviews-minimal__stage {
      opacity: 1 !important;
      transform: none !important;
      filter: none !important;
    }
  }

/* ---- section ---- */

.fws-footer-clean,
  .fws-footer-clean * {
    box-sizing: border-box;
  }

  .fws-footer-clean {
    --fws-footer-ink: #ffffff;
    --fws-footer-muted: rgba(232, 244, 252, .66);
    --fws-footer-soft: rgba(232, 244, 252, .42);
    --fws-footer-blue: #088fd3;
    --fws-footer-blue-hover: #0aa1ed;
    --fws-footer-line: rgba(255,255,255,.12);
    --fws-footer-bg: #030b12;
    --fws-footer-bg-2: #061522;
    --fws-footer-max: 1540px;
    --fws-footer-ease: cubic-bezier(.16, 1, .3, 1);

    position: relative;
    width: 100%;
    overflow: hidden;
    isolation: isolate;
    padding: clamp(64px, 6vw, 92px) 24px 28px;
    background:
      radial-gradient(circle at 8% 0%, rgba(8,143,211,.18), transparent 34%),
      linear-gradient(180deg, var(--fws-footer-bg-2) 0%, var(--fws-footer-bg) 100%);
    color: var(--fws-footer-ink);
    font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  }

  .fws-footer-clean::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background-image:
      linear-gradient(rgba(255,255,255,.045) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.045) 1px, transparent 1px);
    background-size: 56px 56px;
    opacity: .18;
    mask-image: linear-gradient(to bottom, #000 0%, transparent 78%);
    -webkit-mask-image: linear-gradient(to bottom, #000 0%, transparent 78%);
  }

  .fws-footer-clean a {
    color: inherit;
    text-decoration: none;
  }

  .fws-footer-clean__wrap {
    width: min(var(--fws-footer-max), 100%);
    margin: 0 auto;
  }

  .fws-footer-clean__top {
    display: grid;
    grid-template-columns: minmax(0, .86fr) minmax(420px, .72fr);
    align-items: end;
    gap: clamp(42px, 6vw, 110px);
    padding-bottom: clamp(42px, 5vw, 66px);
    border-bottom: 1px solid var(--fws-footer-line);
  }

  .fws-footer-clean__brand {
    max-width: 780px;
  }

  .fws-footer-clean__logo {
    display: inline-flex;
    color: #ffffff;
    font-size: clamp(34px, 4.2vw, 68px);
    line-height: .94;
    letter-spacing: -0.075em;
    font-weight: 600;
    transition:
      color .24s ease,
      transform .32s var(--fws-footer-ease);
  }

  .fws-footer-clean__logo:hover {
    color: #8fdcff;
    transform: translateX(4px);
  }

  .fws-footer-clean__brand p {
    max-width: 690px;
    margin: 22px 0 0;
    color: var(--fws-footer-muted);
    font-size: clamp(15px, 1vw, 17px);
    line-height: 1.62;
    letter-spacing: -0.035em;
    font-weight: 500;
  }

  .fws-footer-clean__message {
    width: 100%;
    max-width: 660px;
    justify-self: end;
  }

  .fws-footer-clean__message label {
    display: block;
    margin-bottom: 18px;
    color: rgba(143, 220, 255, .92);
    font-size: 11px;
    line-height: 1;
    letter-spacing: .13em;
    text-transform: uppercase;
    font-weight: 850;
  }

  .fws-footer-clean__message-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 18px;
  }

  .fws-footer-clean__message input {
    width: 100%;
    min-width: 0;
    height: 54px;
    border: 0;
    border-bottom: 1px solid rgba(255,255,255,.24);
    border-radius: 0;
    outline: none;
    padding: 0;
    background: transparent;
    color: #ffffff;
    font: inherit;
    font-size: clamp(15px, 1vw, 17px);
    line-height: 1;
    letter-spacing: -0.035em;
    font-weight: 600;
    transition:
      border-color .24s ease,
      box-shadow .24s ease;
  }

  .fws-footer-clean__message input::placeholder {
    color: rgba(232, 244, 252, .38);
  }

  .fws-footer-clean__message input:focus {
    border-color: var(--fws-footer-blue);
    box-shadow: 0 10px 26px -24px rgba(8,143,211,.9);
  }

  .fws-footer-clean__btn {
    min-height: 54px;
    min-width: 238px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    border: 0;
    border-radius: 6px;
    padding: 0 28px;
    font: inherit;
    font-size: clamp(14px, .92vw, 16px);
    line-height: 1.55;
    letter-spacing: -0.035em;
    font-weight: 500;
    white-space: nowrap;
    cursor: pointer;
    transition:
      transform .28s var(--fws-footer-ease),
      background .24s ease,
      color .24s ease,
      border-color .24s ease,
      box-shadow .24s ease;
  }

  .fws-footer-clean__btn svg {
    width: 18px;
    height: 18px;
    stroke: currentColor;
    stroke-width: 2.4;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: transform .28s var(--fws-footer-ease);
  }

  .fws-footer-clean__btn:hover {
    transform: translateY(-2px);
  }

  .fws-footer-clean__btn:hover svg {
    transform: translateX(3px);
  }

  .fws-footer-clean__btn--primary {
    background: var(--fws-footer-blue);
    color: #ffffff;
    box-shadow: 0 18px 42px rgba(8,143,211,.30);
  }

  .fws-footer-clean__btn--primary:hover {
    background: var(--fws-footer-blue-hover);
    color: #ffffff;
    box-shadow: 0 22px 50px rgba(8,143,211,.38);
  }

  .fws-footer-clean__grid {
    display: grid;
    grid-template-columns:
      minmax(140px, .8fr)
      minmax(220px, 1.18fr)
      minmax(230px, 1.15fr)
      minmax(340px, 1.55fr);
    gap: clamp(30px, 4.8vw, 72px);
    padding: clamp(42px, 5vw, 66px) 0;
    border-bottom: 1px solid var(--fws-footer-line);
  }

  .fws-footer-clean__col {
    min-width: 0;
  }

  .fws-footer-clean__label {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: rgba(143, 220, 255, .92);
    font-size: 11px;
    line-height: 1;
    letter-spacing: .13em;
    text-transform: uppercase;
    font-weight: 850;
  }

  .fws-footer-clean__label::before {
    content: "";
    width: 26px;
    height: 1px;
    background: var(--fws-footer-blue);
  }

  .fws-footer-clean__links {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    margin-top: 22px;
  }

  .fws-footer-clean__links a,
  .fws-footer-clean__links span {
    max-width: 100%;
    color: var(--fws-footer-muted);
    font-size: 14px;
    line-height: 1.3;
    letter-spacing: -0.025em;
    font-weight: 700;
    overflow-wrap: anywhere;
    transition:
      color .22s ease,
      transform .28s var(--fws-footer-ease);
  }

  .fws-footer-clean__links a:hover {
    color: #ffffff;
    transform: translateX(5px);
  }

  .fws-footer-clean__company {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 28px;
    margin-top: 22px;
  }

  .fws-footer-clean__company p {
    min-width: 0;
    margin: 0;
    color: rgba(255,255,255,.82);
    font-size: 13.5px;
    line-height: 1.36;
    letter-spacing: -0.025em;
    font-weight: 700;
    overflow-wrap: anywhere;
  }

  .fws-footer-clean__company p span {
    display: block;
    margin-bottom: 6px;
    color: var(--fws-footer-soft);
    font-size: 10px;
    line-height: 1;
    letter-spacing: .11em;
    text-transform: uppercase;
    font-weight: 850;
  }

  .fws-footer-clean__company-wide {
    grid-column: span 2;
  }

  .fws-footer-clean__bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 28px;
    padding-top: 24px;
  }

  .fws-footer-clean__legal {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 22px;
  }

  .fws-footer-clean__legal a {
    color: var(--fws-footer-soft);
    font-size: 11px;
    line-height: 1;
    letter-spacing: .13em;
    text-transform: uppercase;
    font-weight: 850;
    transition: color .22s ease;
  }

  .fws-footer-clean__legal a:hover {
    color: #ffffff;
  }

  .fws-footer-clean__bottom p {
    margin: 0;
    color: var(--fws-footer-soft);
    font-size: 12.5px;
    line-height: 1.45;
    letter-spacing: -0.02em;
    font-weight: 600;
    text-align: right;
  }

  .fws-footer-clean__bottom p strong {
    color: rgba(255,255,255,.84);
    font-weight: 800;
  }

  @media (max-width: 1180px) {
    .fws-footer-clean__top {
      grid-template-columns: 1fr;
      align-items: start;
    }

    .fws-footer-clean__message {
      max-width: 780px;
      justify-self: start;
    }

    .fws-footer-clean__grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .fws-footer-clean__col--company {
      grid-column: 1 / -1;
    }

    .fws-footer-clean__company {
      grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .fws-footer-clean__company-wide {
      grid-column: span 2;
    }
  }

  @media (max-width: 720px) {
    .fws-footer-clean {
      padding: 56px 18px 26px;
    }

    .fws-footer-clean__top {
      gap: 38px;
      padding-bottom: 38px;
    }

    .fws-footer-clean__logo {
      font-size: clamp(34px, 11vw, 54px);
      line-height: .98;
    }

    .fws-footer-clean__brand p {
      margin-top: 20px;
      font-size: 15px;
      line-height: 1.58;
    }

    .fws-footer-clean__message {
      max-width: 100%;
    }

    .fws-footer-clean__message label {
      margin-bottom: 16px;
      font-size: 10.5px;
    }

    .fws-footer-clean__message-row {
      grid-template-columns: 1fr;
      gap: 18px;
    }

    .fws-footer-clean__message input {
      height: 50px;
      font-size: 15px;
    }

    .fws-footer-clean__btn {
      width: 100%;
      min-width: 0;
    }

    .fws-footer-clean__grid {
      grid-template-columns: 1fr;
      gap: 34px;
      padding: 40px 0;
    }

    .fws-footer-clean__col--company {
      grid-column: auto;
    }

    .fws-footer-clean__company {
      grid-template-columns: 1fr;
      gap: 17px;
    }

    .fws-footer-clean__company-wide {
      grid-column: auto;
    }

    .fws-footer-clean__bottom {
      flex-direction: column;
      align-items: flex-start;
      gap: 20px;
    }

    .fws-footer-clean__bottom p {
      text-align: left;
      font-size: 12px;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .fws-footer-clean,
    .fws-footer-clean * {
      transition: none !important;
      animation: none !important;
    }
  }

/* Progetti: gerarchia tipografica mobile condivisa */
@media (max-width: 760px) {
  body section h1,
  body section h2,
  .fws-footer-clean__logo {
    font-size: clamp(31.5px, 8vw, 44px) !important;
  }

  body section h3,
  .fws-portfolio-card__title,
  .fws-review-minimal footer strong {
    font-size: 26px !important;
  }

  body section p,
  body section [class$="__desc"],
  body section [class$="__text"],
  body section [class*="__btn"],
  body section [class*="__cta"],
  .fws-review-minimal footer small,
  .fws-footer-clean__brand p,
  .fws-footer-clean__label,
  .fws-footer-clean__links a,
  .fws-footer-clean__links span,
  .fws-footer-clean__company p,
  .fws-footer-clean__company p span,
  .fws-footer-clean__message label,
  .fws-footer-clean__btn {
    font-size: 16.3px !important;
  }
}

/* Progetti: recensioni identiche alla Homepage da mobile */
@media (max-width: 760px) {
  .fws-reviews-minimal__title {
    font-size: clamp(32px, 9.6vw, 50px) !important;
  }

  .fws-review-minimal footer strong {
    font-size: 16.3px !important;
  }

  .fws-review-minimal footer small {
    font-size: 15px !important;
  }

  .fws-review-minimal__stars {
    font-size: 12px !important;
  }
}

@media (max-width: 520px) {
  .fws-review-minimal__stars {
    font-size: 11px !important;
  }
}
