/* 个人信息页入场：ProtoPie 1:1 时序 / 坐标 / 缓动（画布 1757×1217.61 居中于 1920×1350） */

.profile-intro {
  position: absolute;
  inset: 0;
  width: 1920px;
  height: 100%;
  z-index: 8;
  pointer-events: none;
  overflow: hidden;
  opacity: 0;
  transition: opacity 1.3s ease;
}

.profile-intro:not([hidden]) {
  pointer-events: auto;
}

.profile-intro__stage {
  position: absolute;
  inset: 0;
  pointer-events: none;
  display: flex;
  align-items: center;
  justify-content: center;
}

.profile-intro__pinch {
  position: relative;
  width: 1757px;
  height: 1217.61px;
  transform: scale(1) translateY(0);
  transform-origin: 50% 50%;
}

.profile-intro.profile-intro--deck-mode .profile-intro__pinch {
  will-change: transform;
}

/* 入场转场期间：内容主容器固定 scale(1)，不参与转场弹性形变 */
.profile-intro--active:not(.profile-intro--deck-mode) .profile-intro__pinch {
  transform: scale(1) translateY(0) !important;
  opacity: 1 !important;
}

/* 转场 settled 至 deck 接管前：禁止衔接帧整体缩放 */
.profile-intro--settled:not(.profile-intro--deck-mode) .profile-intro__pinch {
  transform: scale(1) translateY(0) !important;
  opacity: 1 !important;
}

.profile-intro--active .profile-intro__stage,
.profile-intro--settled .profile-intro__stage {
  pointer-events: auto;
}

/* 画布容器：与形变遮罩终态一致，居中固定 */
.profile-canvas-wrap {
  position: absolute;
  left: 0;
  top: 0;
  width: 1757px;
  height: 1217.61px;
  border-radius: 92px;
  overflow: visible;
}

/* ① Lottie 转场由 profile-lottie-transition.js 驱动（z-index:9，转场期间覆盖本层 z=8，见 profile-lottie-transition.css） */

/* --active 时抬至转场层之上，避免被转场全屏层遮挡 */
.profile-intro.profile-intro--active:not(.profile-intro--deck-mode) {
  z-index: 19;
  opacity: 1;
}

/* 入场动效：fill-mode 兜底，避免 --active 提前移除时硬跳终态 */
.profile-intro--active .profile-canvas-bg,
.profile-intro--active .profile-baidi,
.profile-intro--active .profile-left,
.profile-intro--active .profile-photo,
.profile-intro--active .profile-baidi-bar,
.profile-intro--active .profile-contact-row,
.profile-intro--active .profile-skill,
.profile-intro--resume-enter .profile-resume-track,
.profile-intro--resume-enter .profile-resume-thumb {
  animation-fill-mode: forwards;
}

/* settled / deck 阶段保持可见（移除 --active 后不回 opacity:0） */
.profile-intro--settled:not(.profile-intro--deck-mode),
.profile-intro.profile-intro--deck-mode {
  opacity: 1;
}

/* 三、底层信息画布 */
.profile-canvas-bg {
  position: absolute;
  left: 0;
  top: 0;
  width: 1757px;
  height: 1217.61px;
  border-radius: 92px;
  object-fit: cover;
  display: block;
  opacity: 0;
  pointer-events: none;
}

.profile-intro--active .profile-canvas-bg {
  animation: profileCanvasFadeIn 0.35s cubic-bezier(0.01, 0.01, 0.08, 0.99) 0.59s forwards;
}

@keyframes profileCanvasFadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

/* 入场淡入结束后保持显示（移除 --active 后不再回到 opacity:0） */
.profile-intro--settled .profile-canvas-bg,
.profile-intro.profile-intro--deck-mode .profile-canvas-bg {
  opacity: 1;
  animation: none;
}

/* 四、白底容器（左侧个人信息，790×1046） */
.profile-baidi,
.profile-left {
  position: absolute;
  left: 45px;
  top: 84px;
  width: 790px;
  height: 1046px;
  opacity: 0;
  z-index: 2;
  pointer-events: none;
  overflow: hidden;
}

/* 白底内矢量填充层 */
.profile-baidi-vector {
  position: absolute;
  left: 0;
  top: 0;
  width: 790px;
  height: 1046px;
  border-radius: 71px;
  background-color: #c4dbf7;
  z-index: 0;
  pointer-events: none;
}

.profile-intro--active .profile-baidi,
.profile-intro--active .profile-left {
  animation:
    profileBaidiOpacity 0.28s linear 0.44s forwards,
    profileBaidiMove 0.65s ease-out 0.48s forwards;
}

@keyframes profileBaidiOpacity {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

/* 白底：仅 X 45→91，Y=84 不变 */
@keyframes profileBaidiMove {
  from {
    left: 45px;
  }
  to {
    left: 91px;
  }
}

.profile-intro--settled .profile-baidi,
.profile-intro--settled .profile-left {
  left: 91px;
  top: 84px;
  opacity: 1;
}

/* 五、左侧子元素 */
.profile-photo {
  position: absolute;
  left: 30px;
  top: 65px;
  width: 368px;
  height: 522px;
  max-width: none;
  display: block;
  object-fit: cover;
  z-index: 1;
}

.profile-intro--active .profile-photo {
  animation: profilePhotoMove 1.05s ease-out 0.48s forwards;
}

@keyframes profilePhotoMove {
  from {
    left: 30px;
  }
  to {
    left: 79px;
  }
}

.profile-intro--settled .profile-photo {
  left: 79px;
}

.profile-about-title {
  position: absolute;
  left: 78px;
  top: 626px;
  width: 179.6px;
  height: 29px;
  display: block;
  object-fit: contain;
}

/* 白底内长条矢量：左锚点向右展开 */
.profile-baidi-bar {
  position: absolute;
  left: 78px;
  top: 670px;
  width: 0;
  height: 3px;
  border-radius: 100px;
  background-color: #000;
  z-index: 1;
  pointer-events: none;
}

.profile-intro--active .profile-baidi-bar {
  animation: profileBaidiBarGrow 0.63s ease-in-out 0.31s forwards;
}

@keyframes profileBaidiBarGrow {
  from {
    width: 0;
  }
  to {
    width: 80px;
  }
}

.profile-intro--settled .profile-baidi-bar {
  width: 80px;
}

/* 个人介绍：内嵌白底，随容器位移，无独立动效 */
.profile-baidi-intro {
  position: absolute;
  left: 74.5px;
  top: 694px;
  width: 660px;
  height: 102.66px;
  display: block;
  object-fit: contain;
}

/* 头像 / About / 介绍文案：独立合成层，减轻 Lottie→DOM 切换闪帧（不锁父级 pinch 滚动形变） */
.profile-photo,
.profile-about-title,
.profile-baidi-intro {
  will-change: transform, opacity;
  transform: translateZ(0);
  isolation: isolate;
}

/* 信息栏：文字切图（含行内图标），坐标相对白底，与 About Me / 个人介绍左对齐 */
.profile-contact {
  position: absolute;
  left: 0;
  top: 0;
  width: 790px;
  height: 1046px;
  z-index: 3;
  pointer-events: none;
}

.profile-contact-row {
  position: absolute;
  left: 2px;
  display: block;
  margin: 0;
  opacity: 0;
}

.profile-contact-row--name {
  top: 822px;
}

.profile-contact-row--phone {
  top: 864px;
}

.profile-contact-row--email {
  top: 906px;
}

.profile-contact-row--school {
  top: 947px;
}

.profile-contact-text {
  display: block;
  object-fit: contain;
}

.profile-contact-row--name .profile-contact-text {
  width: 227.05px;
  height: 29.05px;
}

.profile-contact-row--phone .profile-contact-text {
  width: 286.59px;
  height: 29.04px;
}

.profile-contact-row--email .profile-contact-text {
  width: 396px;
  height: 29.05px;
}

.profile-contact-row--school .profile-contact-text {
  width: 281.55px;
  height: 29.01px;
}

.profile-intro--active .profile-contact-row--name {
  animation: profileContactSlideX 0.65s ease-in-out 0.36s forwards;
}

.profile-intro--active .profile-contact-row--phone {
  animation: profileContactSlideX 0.65s ease-in-out 0.42s forwards;
}

.profile-intro--active .profile-contact-row--email {
  animation: profileContactSlideX 0.65s ease-in-out 0.48s forwards;
}

.profile-intro--active .profile-contact-row--school {
  animation: profileContactSlideX 0.65s ease-in-out 0.54s forwards;
}

@keyframes profileContactSlideX {
  from {
    left: 2px;
    opacity: 0;
  }
  to {
    left: 74.5px;
    opacity: 1;
  }
}

.profile-intro--settled .profile-contact-row {
  left: 74.5px;
  opacity: 1;
}

/* 六、右侧履历裁剪（画布坐标 X=1049 Y=206，裁剪子级） */
.profile-resume-clip {
  position: absolute;
  left: 1049px;
  top: 206px;
  width: 566px;
  height: 568px;
  overflow: hidden;
  overscroll-behavior: contain;
  touch-action: pan-y;
  pointer-events: auto;
  z-index: 3;
  will-change: transform;
  transform: translateZ(0);
  backface-visibility: hidden;
}

.profile-resume-track {
  position: absolute;
  left: 0;
  top: 0;
  width: 566px;
  height: 1170px;
  will-change: transform;
  transform: translate3d(0, -256px, 0);
  backface-visibility: hidden;
  opacity: 0;
}

.profile-intro--resume-enter .profile-resume-track,
.profile-intro--settled:not(.profile-intro--deck-mode) .profile-resume-track {
  animation:
    profileResumeTrackY 1.5s cubic-bezier(0.01, 0.01, 0.08, 0.99) 0.26s forwards,
    profileResumeTrackFade 0.67s linear 0.26s forwards;
}

@keyframes profileResumeTrackY {
  from {
    transform: translate3d(0, -256px, 0);
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes profileResumeTrackFade {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.profile-intro--settled .profile-resume-track {
  opacity: 1;
}

.profile-intro.profile-intro--deck-mode.profile-intro--settled .profile-resume-track,
.profile-intro.profile-intro--deck-mode.profile-intro--settled .profile-resume-thumb {
  animation: none;
  opacity: 1;
}

.profile-resume-img {
  position: absolute;
  left: 0;
  top: 0;
  width: 566px;
  height: 1170px;
  display: block;
  max-width: none;
  pointer-events: none;
  user-select: none;
}

/* 右侧滑块矢量（画布坐标 X=1653 Y=482；入场 Y 548→273） */
.profile-resume-thumb {
  position: absolute;
  left: 1653px;
  top: 548px;
  width: 27px;
  height: 59px;
  border-radius: 100px;
  background-color: #637487;
  opacity: 0;
  z-index: 4;
  will-change: transform;
  transform: translateZ(0);
  backface-visibility: hidden;
  pointer-events: auto;
  touch-action: none;
  cursor: grab;
}

.profile-resume-thumb.is-hover,
.profile-resume-thumb.is-dragging {
  background-color: #C4DBF7;
}

.profile-resume-thumb:active,
.profile-resume-thumb.is-dragging {
  cursor: grabbing;
  animation: none;
}

.profile-intro--resume-enter .profile-resume-thumb,
.profile-intro--settled:not(.profile-intro--deck-mode) .profile-resume-thumb {
  animation:
    profileResumeThumbY 1.5s cubic-bezier(0.01, 0.01, 0.08, 0.99) 0.26s forwards,
    profileResumeThumbFade 0.97s linear 0.32s forwards;
}

@keyframes profileResumeThumbY {
  from {
    top: 548px;
  }
  to {
    top: 273px;
  }
}

@keyframes profileResumeThumbFade {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.profile-intro--settled .profile-resume-thumb {
  opacity: 1;
}

/* 七、软件容器（右侧软件技能，563×277） */
.profile-skills {
  position: absolute;
  left: 1116px;
  top: 829px;
  width: 563px;
  height: 277px;
  z-index: 3;
}

.profile-skill {
  position: absolute;
  display: block;
  opacity: 0;
  object-fit: contain;
}

.profile-skill--ps {
  left: 0;
  top: 29px;
  width: 40.05px;
  height: 26.49px;
}
.profile-skill--ai {
  left: 79px;
  top: 29px;
  width: 31.01px;
  height: 25.99px;
}
.profile-skill--ae {
  left: 150px;
  top: 29px;
  width: 41.48px;
  height: 26px;
}
.profile-skill--sketch {
  left: 229px;
  top: 28px;
  width: 99.39px;
  height: 27.5px;
}
.profile-skill--figma {
  left: 367px;
  top: 28px;
  width: 88.95px;
  height: 33.5px;
}
.profile-skill--c4d {
  left: -1px;
  top: 103px;
  width: 60.48px;
  height: 26.5px;
}
.profile-skill--3dmax {
  left: 99px;
  top: 103px;
  width: 110.42px;
  height: 26.5px;
}
.profile-skill--principle {
  left: 248px;
  top: 102px;
  width: 127.23px;
  height: 33.5px;
}
.profile-skill--protopie {
  left: 414px;
  top: 104px;
  width: 114.1px;
  height: 30.81px;
}
.profile-skill--sd {
  left: 1px;
  top: 203px;
  width: 41px;
  height: 25.36px;
}
.profile-skill--comfyui {
  left: 79px;
  top: 202px;
  width: 123.21px;
  height: 34.5px;
}
.profile-skill--midjourney {
  left: 239px;
  top: 202.5px;
  width: 161.9px;
  height: 34px;
}
.profile-skill--lora {
  left: -11px;
  top: 245px;
  width: 562px;
  height: 39.1px;
}

.profile-intro--active .profile-skill--ps {
  animation: profileSkillRow1 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.26s forwards;
}
.profile-intro--active .profile-skill--ai {
  animation: profileSkillRow1 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.32s forwards;
}
.profile-intro--active .profile-skill--ae {
  animation: profileSkillRow1 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.38s forwards;
}
.profile-intro--active .profile-skill--sketch {
  animation: profileSkillRow1Alt 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.44s forwards;
}
.profile-intro--active .profile-skill--figma {
  animation: profileSkillRow1Alt 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.5s forwards;
}
.profile-intro--active .profile-skill--c4d {
  animation: profileSkillRow2 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.26s forwards;
}
.profile-intro--active .profile-skill--3dmax {
  animation: profileSkillRow2 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.32s forwards;
}
.profile-intro--active .profile-skill--principle {
  animation: profileSkillPrinciple 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.38s forwards;
}
.profile-intro--active .profile-skill--protopie {
  animation: profileSkillProtopie 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.44s forwards;
}
.profile-intro--active .profile-skill--sd {
  animation: profileSkillSd 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.32s forwards;
}
.profile-intro--active .profile-skill--comfyui {
  animation: profileSkillComfy 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.41s forwards;
}
.profile-intro--active .profile-skill--midjourney {
  animation: profileSkillMj 1.03s cubic-bezier(0.34, 1.58, 0.63, 0.92) 0.5s forwards;
}
.profile-intro--active .profile-skill--lora {
  animation: profileSkillLoraFade 0.79s cubic-bezier(0.65, 0, 0.35, 1) 0.5s forwards;
}

@keyframes profileSkillLoraFade {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes profileSkillRow1 {
  from {
    opacity: 0;
    top: 29px;
  }
  to {
    opacity: 1;
    top: 1px;
  }
}

@keyframes profileSkillRow1Alt {
  from {
    opacity: 0;
    top: 28px;
  }
  to {
    opacity: 1;
    top: 1px;
  }
}

@keyframes profileSkillRow2 {
  from {
    opacity: 0;
    top: 103px;
  }
  to {
    opacity: 1;
    top: 77px;
  }
}

@keyframes profileSkillPrinciple {
  from {
    opacity: 0;
    top: 102px;
  }
  to {
    opacity: 1;
    top: 77px;
  }
}

@keyframes profileSkillProtopie {
  from {
    opacity: 0;
    top: 104px;
  }
  to {
    opacity: 1;
    top: 77px;
  }
}

@keyframes profileSkillSd {
  from {
    opacity: 0;
    top: 203px;
  }
  to {
    opacity: 1;
    top: 174.5px;
  }
}

@keyframes profileSkillComfy {
  from {
    opacity: 0;
    top: 202px;
  }
  to {
    opacity: 1;
    top: 174.5px;
  }
}

@keyframes profileSkillMj {
  from {
    opacity: 0;
    top: 202.5px;
  }
  to {
    opacity: 1;
    top: 174.5px;
  }
}

.profile-intro--settled .profile-skill--ps,
.profile-intro--settled .profile-skill--ai,
.profile-intro--settled .profile-skill--ae,
.profile-intro--settled .profile-skill--sketch,
.profile-intro--settled .profile-skill--figma {
  top: 1px;
  opacity: 1;
}
.profile-intro--settled .profile-skill--c4d,
.profile-intro--settled .profile-skill--3dmax,
.profile-intro--settled .profile-skill--principle,
.profile-intro--settled .profile-skill--protopie {
  top: 77px;
  opacity: 1;
}
.profile-intro--settled .profile-skill--sd,
.profile-intro--settled .profile-skill--comfyui,
.profile-intro--settled .profile-skill--midjourney {
  top: 174.5px;
  opacity: 1;
}
.profile-intro--settled .profile-skill--lora {
  left: -11px;
  top: 245px;
  opacity: 1;
}

/* --settled：内部子素材永久终态，禁用入场 animation（不锁父级 pinch 滚动 transform） */
.profile-intro--settled .profile-canvas-bg,
.profile-intro--settled .profile-baidi,
.profile-intro--settled .profile-left,
.profile-intro--settled .profile-baidi-bar,
.profile-intro--settled .profile-photo,
.profile-intro--settled .profile-about-title,
.profile-intro--settled .profile-baidi-intro,
.profile-intro--settled .profile-contact-row,
.profile-intro--settled .profile-contact-text,
.profile-intro--settled .profile-skill--ps,
.profile-intro--settled .profile-skill--ai,
.profile-intro--settled .profile-skill--ae,
.profile-intro--settled .profile-skill--sketch,
.profile-intro--settled .profile-skill--figma,
.profile-intro--settled .profile-skill--c4d,
.profile-intro--settled .profile-skill--3dmax,
.profile-intro--settled .profile-skill--principle,
.profile-intro--settled .profile-skill--protopie,
.profile-intro--settled .profile-skill--sd,
.profile-intro--settled .profile-skill--comfyui,
.profile-intro--settled .profile-skill--midjourney,
.profile-intro--settled .profile-skill--lora {
  opacity: 1;
  animation: none !important;
  transition: none !important;
}

/* 履历区：保留 JS 滚动/滑块联动，仅禁止入场 animation */
.profile-intro--settled .profile-resume-track {
  animation: none !important;
  opacity: 1;
}

.profile-intro--settled .profile-resume-img,
.profile-intro--settled .profile-resume-thumb {
  animation: none;
}

/* 首屏点击瞬间隐藏（无过渡） */
.hero--portal #hero-media,
.hero--portal .hero__media-root,
#hero-media.hero-media--instant-hide {
  visibility: hidden !important;
  opacity: 0 !important;
  transition: none !important;
  pointer-events: none !important;
}

.hero--portal .hero__portal {
  animation: none;
  opacity: 0;
}

/* Lottie 转场瞬间对齐：仅禁用入场动画，不锁死 opacity/transform（淡出后移除本类，交还滚动联动） */
.profile-intro--instant-reveal {
  visibility: visible !important;
  animation: none !important;
}

.profile-intro--instant-reveal .profile-canvas-bg,
.profile-intro--instant-reveal .profile-baidi,
.profile-intro--instant-reveal .profile-left,
.profile-intro--instant-reveal .profile-photo,
.profile-intro--instant-reveal .profile-baidi-bar,
.profile-intro--instant-reveal .profile-about-title,
.profile-intro--instant-reveal .profile-baidi-intro,
.profile-intro--instant-reveal .profile-contact-row,
.profile-intro--instant-reveal .profile-skill,
.profile-intro--instant-reveal .profile-resume-track,
.profile-intro--instant-reveal .profile-resume-thumb {
  animation: none !important;
  transition: none !important;
}

/* 头像 / 左侧文字：锁定合成层，避免 DOM 首帧空白断层 */
.profile-intro--instant-reveal .profile-photo,
.profile-intro--instant-reveal .profile-about-title,
.profile-intro--instant-reveal .profile-baidi-intro {
  isolation: isolate;
}

.profile-intro--instant-reveal.profile-intro--settled .profile-photo {
  left: 79px !important;
  opacity: 1 !important;
}

.profile-intro--instant-reveal.profile-intro--settled .profile-about-title {
  left: 78px !important;
  top: 626px !important;
  opacity: 1 !important;
}

.profile-intro--instant-reveal.profile-intro--settled .profile-baidi-intro {
  left: 74.5px !important;
  top: 694px !important;
  opacity: 1 !important;
}

.profile-intro--instant-reveal.profile-intro--settled .profile-canvas-bg {
  opacity: 1 !important;
}

.profile-intro--instant-reveal.profile-intro--settled .profile-baidi,
.profile-intro--instant-reveal.profile-intro--settled .profile-left {
  left: 91px !important;
  top: 84px !important;
  opacity: 1 !important;
}

.profile-intro--instant-reveal.profile-intro--settled .profile-baidi-bar {
  width: 80px !important;
  opacity: 1 !important;
}

.profile-intro--instant-reveal.profile-intro--settled .profile-contact-row {
  left: 74.5px !important;
  opacity: 1 !important;
}

.profile-intro--instant-reveal.profile-intro--settled .profile-resume-track,
.profile-intro--instant-reveal.profile-intro--settled .profile-resume-thumb {
  opacity: 1 !important;
}

.profile-intro--instant-reveal.profile-intro--active .profile-canvas-bg,
.profile-intro--instant-reveal.profile-intro--active .profile-baidi,
.profile-intro--instant-reveal.profile-intro--active .profile-left,
.profile-intro--instant-reveal.profile-intro--active .profile-photo,
.profile-intro--instant-reveal.profile-intro--active .profile-baidi-bar,
.profile-intro--instant-reveal.profile-intro--active .profile-contact-row,
.profile-intro--instant-reveal.profile-intro--active .profile-skill,
.profile-intro--instant-reveal.profile-intro--resume-enter .profile-resume-track,
.profile-intro--instant-reveal.profile-intro--resume-enter .profile-resume-thumb,
.profile-intro--instant-reveal .profile-resume-track,
.profile-intro--instant-reveal .profile-resume-thumb {
  animation: none !important;
}

.profile-intro--settled {
  pointer-events: auto;
}

.profile-intro.profile-intro--deck-mode {
  z-index: 8;
  pointer-events: none;
  will-change: opacity;
  /* 滚动联动由 JS 每帧写 opacity，禁止 1.3s 过渡（快滚会拖影） */
  transition: none !important;
}

.profile-intro.profile-intro--deck-mode .profile-intro__stage {
  pointer-events: none;
}

.profile-intro.profile-intro--deck-mode .profile-intro__pinch {
  pointer-events: auto;
}

.profile-intro.profile-intro--deck-mode .profile-resume-clip,
.profile-intro.profile-intro--deck-mode .profile-resume-thumb {
  pointer-events: auto;
}

.profile-intro.profile-intro--deck-mode.profile-intro--resume-blocked .profile-resume-clip,
.profile-intro.profile-intro--deck-mode.profile-intro--resume-blocked .profile-resume-thumb {
  pointer-events: none !important;
}

/* 动画运行期间：开启 GPU 硬件加速，仅作用于做位移/透明度动画的元素 */
.profile-intro__pinch,
.profile-canvas-bg,
.profile-baidi,
.profile-left,
.profile-contact-row,
.profile-skill {
  will-change: transform, opacity;
  transform: translateZ(0);
}

/* 页面完全稳定后：关闭硬件加速、释放 GPU 资源（履历轨/滑块保留 transform/top 动画属性） */
.profile-intro--settled .profile-intro__pinch,
.profile-intro--settled .profile-canvas-bg,
.profile-intro--settled .profile-baidi,
.profile-intro--settled .profile-left,
.profile-intro--settled .profile-contact-row,
.profile-intro--settled .profile-skill {
  will-change: auto;
  transform: none;
}

.profile-intro--settled .profile-resume-track,
.profile-intro--settled .profile-resume-thumb {
  will-change: auto;
}
