<template>
  <div class="secondEdition"><p class="theTitle">GitLink，新一代开源创新服务平台</p>
    <div>
      <div class="" style="">
        <div class="ant-anchor-wrapper" style="max-height: 100vh;">
          <div class="ant-anchor">
            <div class="ant-anchor-ink"><span class="ant-anchor-ink-ball"></span></div>
            <li class="active"><a>分布式协作开发</a></li>
            <li class=""><a>一站式过程管理</a></li>
            <li class=""><a>高效流水线运维</a></li>
            <li class=""><a>多层次代码分析</a></li>
            <li class=""><a>多维度用户画像</a></li>
          </div>
        </div>
      </div>
    </div>
    <div class="secondEditionContent">
      <div class="hadoop" id="hadoop">
        <div class="hadoopCon">
          <div class="descBox"><p class="desc1">分布式协作开发</p>
            <p class="desc2">基于Git打造分布式代码托管环境，提供免费公、私有代码仓库；</p>
            <p class="desc3">支持在线文件编辑、代码分支管理、协作贡献统计、代码仓库复刻（Fork）、贡献合并请求（PR）、群智贡献审阅等功能；</p></div>
          <div class="hadoopCode"  :ref="(el) => setTargetRef(el, 'hadoop')">
<!--            <li>-->
<!--              <pre class="word-item" style="animation-delay: 0.2s;"><span class="codenum">1</span><span><span-->
<!--                class="code-green">git remote</span> add origin https://git.trustie.net/Gitlink/Gitlink.git</span></pre>-->
<!--            </li>-->
<!--            <li>-->
<!--              <pre class="word-item" style="animation-delay: 0.4s;"><span class="codenum">2</span><span><span-->
<!--                class="code-red">git push</span> -u origin master</span></pre>-->
<!--            </li>-->
<!--            <li>-->
<!--              <pre class="word-item" style="animation-delay: 0.6s;"><span class="codenum">3</span><span><span-->
<!--                class="code-green">git branch</span> dev</span></pre>-->
<!--            </li>-->
<!--            <li>-->
<!--              <pre class="word-item" style="animation-delay: 0.8s;"><span class="codenum">4</span><span><span-->
<!--                class="code-blue">git checkout</span> dev</span></pre>-->
<!--            </li>-->
<!--            <li>-->
<!--              <pre class="word-item" style="animation-delay: 1s;"><span class="codenum">5</span><span><span-->
<!--                class="code-green">git add</span> .</span></pre>-->
<!--            </li>-->
<!--            <li>-->
<!--              <pre class="word-item" style="animation-delay: 1.2s;"><span class="codenum">6</span><span><span-->
<!--                class="code-red">git commit</span> -m "xxx"</span></pre>-->
<!--            </li>-->
<!--            <li>-->
<!--              <pre class="word-item" style="animation-delay: 1.4s;"><span class="codenum">7</span><span><span-->
<!--                class="code-red">git push</span> origin dev</span></pre>-->
<!--            </li>-->
<!--            <li>-->
<!--              <pre class="word-item" style="animation-delay: 1.6s;"><span class="codenum">8</span><span><span-->
<!--                class="code-blue">git checkout</span> master</span></pre>-->
<!--            </li>-->
<!--            <li>-->
<!--              <pre class="word-item" style="animation-delay: 1.8s;"><span class="codenum">9</span><span><span-->
<!--                class="code-green">git pull</span> origin master</span></pre>-->
<!--            </li>-->
<!--            <li>-->
<!--              <pre class="word-item" style="animation-delay: 2s;"><span class="codenum">10</span><span><span-->
<!--                class="code-green">git merge</span> dev</span></pre>-->
<!--            </li>-->
<!--            <li>-->
<!--              <pre class="word-item" style="animation-delay: 2.2s;"><span class="codenum">11</span><span><span-->
<!--                class="code-red">git push</span> origin master</span></pre>-->
<!--            </li>-->
            <img src="@/assets/v3/Line/codeafter.c3088c74.png" alt="运行结果" class="activeImg"></div>
        </div>
        <p class="hadoopdesc">让您的项目在这里健康、快速的成长！</p></div>
      <div class="oneStop"  :ref="(el) => setTargetRef(el, 'oneStop')" id="oneStop">
        <div class="oneStopContent">
          <div class="osLeftMain"><img src="@/assets/v3/Line/2-2-1.afd0f2f5.png" alt="" width="520px"
                                       class="osleftPosi"><img src="@/assets/v3/Line/2-2-head.5e69dbb2.png" alt=""
                                                               width="213px" style="margin-left: -12px;"><img
            src="@/assets/v3/Line/2-2-2.26bc3301.png" alt="" width="653px" class="osleftPosi1"><img
            src="@/assets/v3/Line/2-2-3.6d6ce99c.png" alt="" width="367px" class="osleftPosi2"></div>
          <div class="osRightMain"><p class="osRightTitle">一站式过程管理</p>
            <p>提供<span>疑修（Issue）、里程碑、通知提醒、标签归档</span>等多样化任务管理工具，支持各类开发任务的发布、指派与跟踪；</p>
            <p>同时提供<span>在线Wiki文档、组织多粒度管理</span>等功能，为您搭建一站式的项目过程管理环境；</p>
            <p><span>让您的团队协作更高效、过程更透明！</span></p></div>
        </div>
        <img
          src="data:image/png;base64,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"
          alt="" height="83px" class="imgring"></div>
      <div class="highDevops" :ref="(el) => setTargetRef(el, 'highDevops')" id="highDevops">
        <div class="highDoTitle"><span>高效流水线运维</span></div>
        <div class="highDoSubtitle">融合DevOps思想，提供轻量级的工作流引擎（Engine），<span>打通编码、测试、构建、部署</span>等开发运维环节；支持<span>自定义配置、代码静态扫描、构建自动触发、容器镜像托管</span>等功能，同时支持接入第三方运维工具。
        </div>
        <div class="highDoContent">
          <div><img src="@/assets/v3/Line/2-3-1.bcb33d47.png" alt="" width="794px">
            <div style="margin-bottom: 100px; margin-top: 25px; position: relative;"><img
              src="@/assets/v3/Line/2-3-2.57ef08ae.png" alt="" width="520px"></div>
            <img src="@/assets/v3/Line/2-3-3.52733627.png" alt="" width="427px" class="highImg2"><img
              src="@/assets/v3/Line/2-3-4.339b2f1c.png" alt="" width="413px" class="highImg1"></div>
          <p class="highDoBottondesc">让您的代码更加快速、可靠地形成高质量的产品！</p></div>
      </div>
      <div class="multipleAnalyse" :ref="(el) => setTargetRef(el, 'multipleAnalyse')" id="multipleAnalyse"><span class="title">多层次代码分析</span>
        <div class="maContent"></div>
        <p class="desc">提供软件软代码和芯片RTL代码的溯源分析、文件级和组件级许可证识别及风险分析、输入性开源漏洞检测和加固建议，支持分析结果的多层次可视化展示。</p></div>
      <div class="multidimensional" style="opacity: 1">
        <div style="height: 168px;"></div>
        <div class="" :ref="(el) => setTargetRef(el, 'multidimensional')" id="multidimensional">
          <div class="multidimensinalhalf">
            <div><p class="halfTitle">多维度用户画像</p>
              <p class="halfsubTitle"><span>实时采集和分析平台中的各类开源资源数据，</span>搭建多维度用户画像评估系统；</p></div>
            <div style="width: 820px; margin-left: 34px;"><img src="@/assets/v3/Line/2-6-1.302b729e.png" alt=""
                                                               width="820px"></div>
          </div>
          <div class="multidimensinalPart">
            <div style="width: 614px; margin-right: 40px;"><img src="@/assets/v3/Line/2-6-2.b262b91e.png" alt=""
                                                                width="614px"></div>
            <div><p><span>提供</span>开发活动统计、贡献度日历、用户能力建模、角色与专业定位分析<span>等功能。</span></p>
              <p>让您在个人主页展示开发动态与创新能力！</p></div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script setup>
import { ref, onMounted, onUnmounted, nextTick } from 'vue';

// 1. 定义响应式对象存储所有目标元素（键：标识，值：DOM元素）
const targetElements = ref({});
// 2. 存储交叉观察者实例
let observer = null;

// 3. 规范的 ref 收集函数：处理元素挂载/卸载
const setTargetRef = (el, key) => {
  if (el) {
    // 元素挂载：存入对象
    targetElements.value[key] = el;
  } else {
    // 元素卸载：从对象中移除
    delete targetElements.value[key];
  }
};

// 4. 初始化交叉观察者（批量监听）
const initObserver = () => {
  // 获取所有元素的数组
  const elements = Object.values(targetElements.value);
  if (elements.length === 0) return;

  const observerOptions = {
    root: null,
    rootMargin: '0px',
    threshold: 0.1,
  };

  const observerCallback = (entries) => {
    entries.forEach((entry) => {
      if (entry.isIntersecting) {
        entry.target.classList.add('activeCode');
      } else {
        // 可选：离开视口时移除类
        // entry.target.classList.remove('activeCode');
      }
    });
  };

  observer = new IntersectionObserver(observerCallback, observerOptions);
  // 批量监听所有元素
  elements.forEach((el) => {
    observer.observe(el);
  });
};

// 5. 组件挂载时：等待DOM渲染完成后初始化
onMounted(async () => {
  // 清空原有元素（防止重渲染重复）
  targetElements.value = {};
  await nextTick(); // 等待DOM渲染完成
  initObserver();
});

// 6. 组件卸载时：批量销毁观察者
onUnmounted(() => {
  if (observer) {
    // 停止监听所有元素
    Object.values(targetElements.value).forEach((el) => {
      observer.unobserve(el);
    });
    observer.disconnect();
    observer = null;
  }
});
</script>

<style lang="scss" scoped>
.secondEdition .theTitle {
  height: 53px;
  line-height: 53px;
  font-size: 38px;
  font-weight: 500;
  color: #1e1e1e;
  text-align: center;
  margin: 42px 0 30px !important
}

.secondEdition .ant-affix {
  background-color: #fff;
  box-shadow: 0 2px 7px 0 rgba(0, 0, 0, .09)
}

.secondEdition .ant-anchor-wrapper {
  width: 1200px;
  margin: 0 auto;
  padding-left: 0
}

.secondEdition .ant-anchor-wrapper .ant-anchor {
  display: flex;
  align-items: center;
  justify-content: center
}

.secondEdition .ant-anchor-wrapper .ant-anchor .ant-anchor-ink {
  width: 100%;
  height: 1px;
  border-bottom: 1px solid hsla(0, 0%, 60%, .5);
  bottom: 0;
  top: auto
}

.secondEdition .ant-anchor-wrapper .ant-anchor li {
  padding: 18px 19px;
  margin: 0 10px;
  position: relative;
  font-size: 18px
}

.secondEdition .ant-anchor-wrapper .ant-anchor li a {
  color: #333 !important
}

.secondEdition .ant-anchor-wrapper .ant-anchor li.active:after {
  position: absolute;
  left: 0;
  bottom: 0;
  height: 2px;
  background-color: #466aff;
  content: "";
  width: 100%
}

.secondEdition .secondEditionContent {
  padding: 65px 0;
  width: 1200px;
  margin: 0 auto
}

.secondEdition .secondEditionContent .hadoop {
  background: url(@/assets/v3/Line/2-1bg.d22a63b9.png) no-repeat 50%;
  background-size: cover;
  min-height: 753px;
  padding: 50px 56px
}

.secondEdition .secondEditionContent .hadoop .hadoopCon {
  display: flex;
  width: 100%
}

.secondEdition .secondEditionContent .hadoop .descBox {
  max-width: 352px;
  word-break: break-all
}

.secondEdition .secondEditionContent .hadoop .descBox .desc1 {
  height: 50px;
  line-height: 50px;
  font-size: 36px;
  font-weight: 600;
  color: #fff;
  background: -webkit-linear-gradient(90deg, #50edff, #557cff);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent
}

.secondEdition .secondEditionContent .hadoop .descBox .desc2 {
  height: 72px;
  font-size: 18px;
  font-weight: 500;
  color: #69daf5;
  line-height: 36px;
  margin-top: 97px
}

.secondEdition .secondEditionContent .hadoop .descBox .desc3 {
  height: 108px;
  font-size: 18px;
  font-weight: 500;
  color: #fff;
  line-height: 36px;
  margin-top: 70px
}

.secondEdition .secondEditionContent .hadoop .hadoopdesc {
  color: #fff;
  background: -webkit-linear-gradient(112deg, #ff8b75, #dd2476);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  font-size: 18px;
  line-height: 25px;
  font-weight: 500;
  text-align: center;
  margin-top: 40px
}

.secondEdition .secondEditionContent .oneStop {
  text-align: center;
  opacity: .3;
  transition: 2s
}

.secondEdition .secondEditionContent .oneStop .oneStopContent {
  display: flex
}

.secondEdition .secondEditionContent .oneStop .oneStopContent .osLeftMain {
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
  position: relative;
  margin-bottom: 182px
}

.secondEdition .secondEditionContent .oneStop .oneStopContent .osRightMain {
  margin-left: 22px;
  text-align: left
}

.secondEdition .secondEditionContent .oneStop .oneStopContent .osRightMain .osRightTitle {
  height: 50px;
  font-size: 36px;
  font-weight: 600;
  color: #fff;
  line-height: 50px;
  background: -webkit-linear-gradient(112deg, #ff8b75, #dd2476);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  margin-top: 28px
}

.secondEdition .secondEditionContent .oneStop .oneStopContent .osRightMain p {
  font-size: 20px;
  color: #637497;
  line-height: 36px;
  margin-top: 50px;
  margin-bottom: 0 !important
}

.secondEdition .secondEditionContent .oneStop .oneStopContent .osRightMain p span {
  color: #000;
  font-weight: 500
}

.secondEdition .secondEditionContent .oneStop .imgring, .secondEdition .secondEditionContent .oneStop .osleftPosi {
  transition: 3s;
  opacity: 0
}

.secondEdition .secondEditionContent .oneStop .osleftPosi1, .secondEdition .secondEditionContent .oneStop .osleftPosi2 {
  position: absolute;
  right: -200px;
  top: 102px;
  transition: 2s;
  opacity: 0;
  z-index: 1
}

.secondEdition .secondEditionContent .oneStop .osleftPosi2 {
  top: 317px;
  right: 10px;
  transition: 2.5s;
  z-index: 2
}

.secondEdition .secondEditionContent .oneStop.activeCode, .secondEdition .secondEditionContent .oneStop.activeCode .osleftPosi, .secondEdition .secondEditionContent .oneStop.activeCode .osleftPosi1, .secondEdition .secondEditionContent .oneStop.activeCode .osleftPosi2 {
  opacity: 1
}

.secondEdition .secondEditionContent .oneStop.activeCode .osleftPosi1 {
  right: 10px
}

.secondEdition .secondEditionContent .oneStop.activeCode .osleftPosi2 {
  top: 217px
}

.secondEdition .secondEditionContent .oneStop.activeCode .imgring {
  opacity: 1
}

.secondEdition .secondEditionContent .highDevops {
  text-align: center
}

.secondEdition .secondEditionContent .highDevops.activeCode .highDoContent img {
  opacity: 1
}

.secondEdition .secondEditionContent .highDevops.activeCode .highDoContent img.highImg1 {
  bottom: 62px
}

.secondEdition .secondEditionContent .highDevops.activeCode .highDoContent img.highImg2 {
  bottom: 215px
}

.secondEdition .secondEditionContent .highDevops .highDoTitle {
  position: relative;
  padding: 2px;
  width: 384px;
  height: 90px;
  margin: 7px auto 0;
  border-radius: 10px
}

.secondEdition .secondEditionContent .highDevops .highDoTitle span {
  position: absolute;
  z-index: 3;
  width: 380px;
  height: 86px;
  line-height: 86px;
  border-radius: 10px;
  left: 2px;
  top: 2px;
  display: inline-block;
  font-size: 36px;
  font-weight: 600;
  background: -webkit-linear-gradient(1deg, #d57ca0 12%, #4877f3 57%, #20c3ef 76%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent
}

.secondEdition .secondEditionContent .highDevops .highDoTitle:before {
  position: absolute;
  z-index: 2;
  width: 380px;
  height: 86px;
  line-height: 86px;
  background-color: #fff;
  border-radius: 10px;
  content: "";
  top: 2px;
  left: 2px
}

.secondEdition .secondEditionContent .highDevops .highDoTitle:after {
  position: absolute;
  content: "";
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  border-radius: 10px;
  background: -webkit-linear-gradient(1deg, #d57ca0 12%, #4877f3 57%, #20c3ef 76%);
  z-index: 1
}

.secondEdition .secondEditionContent .highDevops .highDoSubtitle {
  color: #637497;
  font-size: 20px;
  line-height: 36px;
  max-width: 950px;
  margin: 30px auto 28px;
  text-align: center
}

.secondEdition .secondEditionContent .highDevops .highDoSubtitle span {
  color: #000;
  font-weight: 500
}

.secondEdition .secondEditionContent .highDevops .highDoContent {
  background: url(@/assets/v3/Line/2-3bg.deef1b07.png) no-repeat 50%;
  background-size: cover;
  height: 920px;
  padding: 20px 0 114px;
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center
}

.secondEdition .secondEditionContent .highDevops .highDoContent > div {
  display: flex;
  flex-direction: column;
  align-items: center
}

.secondEdition .secondEditionContent .highDevops .highDoContent img {
  opacity: 0;
  transition: 2.4s
}

.secondEdition .secondEditionContent .highDevops .highDoContent .highImg1 {
  position: absolute;
  bottom: 0;
  transition: 1s;
  transition-delay: 1s;
  left: 10px
}

.secondEdition .secondEditionContent .highDevops .highDoContent .highImg2 {
  position: absolute;
  bottom: 0;
  right: 10px;
  transition: 2s;
  transition-delay: 1s
}

.secondEdition .secondEditionContent .highDevops .highDoContent .highDoBottondesc {
  font-size: 20px;
  font-weight: 500;
  color: #000;
  line-height: 39px
}

.secondEdition .secondEditionContent .multipleAnalyse {
  background: url(@/assets/v3/Line/2-4bg.45478d20.png) no-repeat 50%;
  background-size: cover;
  height: 710px;
  padding-left: 58px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  opacity: .3;
  transition: 2s
}

.secondEdition .secondEditionContent .multipleAnalyse.activeCode {
  opacity: 1
}

.secondEdition .secondEditionContent .multipleAnalyse.activeCode .maContent {
  transform: rotateY(1turn)
}

.secondEdition .secondEditionContent .multipleAnalyse .title {
  display: inline-block;
  font-size: 36px;
  font-weight: 600;
  margin-bottom: 26px;
  background: -webkit-linear-gradient(1deg, #6d66ff 12%, #c148ff 57%, #f59f77 76%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  line-height: 50px;
  margin-top: 20px
}

.secondEdition .secondEditionContent .multipleAnalyse .maContent {
  height: 400px;
  width: 723px;
  background: url(@/assets/v3/Line/2-4-1.802eb322.png) no-repeat;
  background-size: 100% 100%;
  margin: 26px 0;
  transition: 3s
}

.secondEdition .secondEditionContent .multipleAnalyse .desc {
  text-align: center;
  max-width: 869px;
  line-height: 30px;
  color: #69daf5;
  font-weight: 400;
  font-size: 18px
}

.secondEdition .secondEditionContent .multidimensional {
  background: url(@/assets/v3/Line/2-5bg.9cca3de1.png) no-repeat 50%;
  background-size: cover;
  height: 1139px;
  padding: 100px 0 0;
  display: flex;
  flex-direction: column;
  opacity: .3;
  transition: 1s
}

.secondEdition .secondEditionContent .multidimensional .multidimensinalhalf {
  display: flex;
  align-items: center;
  position: relative;
  height: 447px
}

.secondEdition .secondEditionContent .multidimensional .multidimensinalhalf img {
  position: absolute;
  left: 0;
  bottom: -20px;
  opacity: 0;
  transition: 3s
}

.secondEdition .secondEditionContent .multidimensional .multidimensinalhalf .halfTitle {
  height: 50px;
  font-size: 36px;
  font-weight: 600;
  color: #fff;
  line-height: 50px;
  background: -webkit-linear-gradient(112deg, #d57ca0, #4877f3 51%, #20c3ef);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  margin-bottom: 70px !important
}

.secondEdition .secondEditionContent .multidimensional .multidimensinalhalf .halfsubTitle {
  font-size: 20px;
  font-weight: 500;
  line-height: 36px;
  color: #000;
  max-width: 350px
}

.secondEdition .secondEditionContent .multidimensional .multidimensinalhalf .halfsubTitle span {
  color: #637497;
  font-weight: 400
}

.secondEdition .secondEditionContent .multidimensional .activeCode {
  opacity: 1
}

.secondEdition .secondEditionContent .multidimensional .activeCode .multidimensinalPart img {
  left: 0;
  opacity: 1
}

.secondEdition .secondEditionContent .multidimensional .activeCode .multidimensinalhalf img {
  left: 380px;
  opacity: 1
}

.secondEdition .secondEditionContent .multidimensinalPart {
  display: flex;
  align-items: center;
  margin-top: 50px;
  position: relative;
  height: 396px;
  transition: 4s
}

.secondEdition .secondEditionContent .multidimensinalPart img {
  position: absolute;
  left: 620px;
  bottom: -20px;
  opacity: 0;
  transition: 3s
}

.secondEdition .secondEditionContent .multidimensinalPart p {
  max-width: 422px;
  text-align: left;
  font-weight: 500;
  line-height: 32px;
  color: #000;
  font-size: 20px
}

.secondEdition .secondEditionContent .multidimensinalPart p span {
  color: #637497;
  font-weight: 400
}

.secondEdition .secondEditionContent .multidimensinalPart p:first-child {
  margin-bottom: 55px !important
}

.ant-anchor-wrapper {
  margin-left: -4px;
  padding-left: 4px;
  overflow: auto;
  background-color: #fff;
}

.ant-anchor-wrapper {
  padding-left: 2px !important
}

.ant-anchor-wrapper .ant-anchor-ink:before {
  background-color: #fff
}

.ant-anchor {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  color: rgba(0, 0, 0, 0.65);
  font-size: 14px;
  font-variant: tabular-nums;
  line-height: 1.5;
  list-style: none;
  font-feature-settings: 'tnum';
  position: relative;
  padding-left: 2px;
}

.ant-anchor-ink {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
}

.ant-anchor-ink::before {
  position: relative;
  display: block;
  width: 2px;
  height: 100%;
  margin: 0 auto;
  background-color: #e8e8e8;
  content: ' ';
}

.ant-anchor-ink-ball {
  position: absolute;
  left: 50%;
  display: none;
  width: 8px;
  height: 8px;
  background-color: #fff;
  border: 2px solid #466aff;
  border-radius: 8px;
  transform: translateX(-50%);
  transition: top 0.3s ease-in-out;
}

html li {
  list-style: none;
}

a {
  color: #466aff;
  text-decoration: none;
  background-color: transparent;
  outline: none;
  cursor: pointer;
  transition: color 0.3s;
  -webkit-text-decoration-skip: objects;
}

div, img, tr, td, table {
  border: 0;
}

*, *::before, *::after {
  box-sizing: border-box;
}

div {
  display: block;
}

img {
  vertical-align: middle;
  border-style: none;
}

img, video {
  max-width: none;
  height: revert-layer;
  display: inline;
}

.hadoopCode {
  margin-left: 32px;
  box-shadow: 0 0 0 2px hsla(0,0%,100%,.1);
  border-radius: 10px;
  padding: 18px 20px;
  flex: 1;
  margin-top: 60px;
  position: relative;
}

.hadoopCode>img {
  position: absolute;
  right: -50px;
  bottom: -50px;
  width: 805px;
  border-radius: 4px;
  opacity: 0;
  z-index: 1;
}

.activeCode>img.activeImg {
  right: 0;
  bottom: -20px;
  opacity: 1;
  width: 705px;
  transition: 1s;
  transition-delay: 3s;
}

.secondEdition .secondEditionContent .multidimensional .activeCode .multidimensinalhalf img {
  left: 380px;
  opacity: 1;
}

</style>
