/* A: two quiet, independent sections, with room for every mark and motion. */
.practice-heading{text-align:center;margin-bottom:76px}
.practice-heading h2{font-size:clamp(2.25rem,4vw,3.25rem);line-height:1.2;letter-spacing:-.035em}
html[lang=zh-CN] .practice-heading h2{letter-spacing:0}
.skills-section{padding-top:118px;padding-bottom:0;max-width:1040px}
.skills-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:70px 70px;list-style:none;padding:0;margin:0;text-align:center}
.skill-item{min-width:0}
.skill-icon{width:36px;height:36px;margin:0 auto 24px;opacity:.88}
.skill-item h3{font-size:1.125rem;line-height:1.45;font-weight:500}
.skill-item p{font-size:.9375rem;color:var(--secondary);line-height:1.85;max-width:255px;margin:12px auto 0;text-wrap:pretty}
.software-section{padding-top:184px;padding-bottom:72px}
.software-section .practice-heading{margin-bottom:82px}
.software-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:38px;row-gap:64px;align-items:start}
.software-card{position:relative;min-width:0;text-align:center;border-radius:18px;--software-ease:cubic-bezier(.22,.75,.2,1)}
.software-trigger{display:flex;flex-direction:column;align-items:center;gap:24px;width:100%;padding:20px 12px 10px;border-radius:16px;position:relative}
.software-logo-wrap{display:grid;place-items:center;width:96px;height:96px;transition:transform .55s var(--software-ease);transform-origin:center}
.software-logo{width:80px;height:80px;object-fit:contain;filter:drop-shadow(0 6px 10px #00000009);transition:filter .5s ease}
.software-card[data-software=unreal] .software-logo,#software-dialog[data-software=unreal] #software-dialog-logo{background:#1d1d1f;border-radius:50%;padding:10px}
.software-card[data-software=jianying] .software-logo,#software-dialog[data-software=jianying] #software-dialog-logo{border-radius:18px}
.software-name{font-size:1.0625rem;line-height:1.5;font-weight:500;overflow-wrap:anywhere}
.software-detail{padding:10px 8px 0;min-height:254px}
.software-demo{height:126px;display:grid;place-items:center;pointer-events:none;perspective:500px}
.software-purpose{font-size:.9375rem;line-height:1.55;font-weight:500;letter-spacing:0;margin-top:14px}
.software-description{font-size:.875rem;line-height:1.85;color:var(--secondary);margin-top:9px;text-wrap:pretty}
.software-enhanced .software-detail{opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .4s var(--software-ease),transform .45s var(--software-ease),visibility .4s}
.software-card.is-active .software-detail{visibility:visible;opacity:1;transform:none}
.software-card.is-active .software-logo-wrap{transform:translateY(-8px)}
.software-card.is-active .software-logo{filter:drop-shadow(0 12px 12px #00000012)}
.software-card[data-software=jianying].is-active .software-logo-wrap{animation:logo-cut .7s var(--software-ease) both}
.software-card[data-software=resolve].is-active .software-logo-wrap{animation:logo-grade .9s var(--software-ease) both}
.software-card[data-software=photoshop].is-active .software-logo-wrap{animation:logo-layer .8s var(--software-ease) both}
.software-card[data-software=lightroom].is-active .software-logo-wrap{animation:logo-light 1.2s ease both}
.software-card[data-software=procreate].is-active .software-logo-wrap{animation:logo-draw .8s var(--software-ease) both}
.software-card[data-software=maya].is-active .software-logo-wrap{animation:logo-model .9s var(--software-ease) both}
.software-card[data-software=unreal].is-active .software-logo-wrap{animation:logo-scene 1s var(--software-ease) both}
.software-card[data-software=blender].is-active .software-logo-wrap{animation:logo-orbit 1s var(--software-ease) both}
.demo-scene{width:min(100%,190px);height:112px;position:relative;display:grid;place-items:center;isolation:isolate}
.edit-tracks{position:relative;width:100%;height:80px;display:grid;gap:7px;padding:8px 0}
.edit-track{display:flex;gap:5px;height:24px}
.edit-track span{border-radius:4px;background:#363638;flex:1}
.edit-track span:nth-child(2){background:#8a7249;flex:1.4}
.edit-track-sound{height:12px;padding:0 12px}
.edit-track-sound span{background:repeating-linear-gradient(90deg,#7c8c86 0 2px,#dfe4e1 2px 4px)}
.edit-track-caption{height:8px;padding:0 25px}
.edit-track-caption span{background:#c9c5bd}
.edit-playhead{position:absolute;top:0;bottom:-2px;left:15%;width:1px;background:#aa8541;opacity:.9}
.edit-playhead::before{content:'';position:absolute;top:-1px;left:-3px;width:7px;height:7px;border-radius:50%;background:inherit}
.is-active .edit-playhead{animation:timeline-pass 2s .18s var(--software-ease) both}
.is-active .edit-track:first-child span:nth-child(2){animation:clip-join 1s .15s var(--software-ease) both}
.grade-wheels{display:flex;gap:11px;align-items:center;justify-content:center}
.grade-wheels span{width:46px;height:46px;border-radius:50%;position:relative;background:conic-gradient(#bf605a,#c2b775,#68a698,#738cae,#b781a7,#bf605a)}
.grade-wheels span::after{content:'';position:absolute;inset:5px;border-radius:50%;background:radial-gradient(circle at 40% 38%,#e4ddd4,#7e858c)}
.grade-wheels span:nth-child(2)::after{background:radial-gradient(circle at 48% 50%,#f9e9cf,#737471)}
.grade-wheels span:nth-child(3)::after{background:radial-gradient(circle at 55% 35%,#f4dfb4,#7d8d99)}
.grade-spectrum{width:150px;height:5px;border-radius:5px;background:linear-gradient(90deg,#474f62,#bd9c6d,#efdac1);margin-top:-20px}
.is-active .grade-wheels span{animation:grade-turn 1.6s var(--software-ease) both}
.is-active .grade-wheels span:nth-child(2){animation-delay:.12s}.is-active .grade-wheels span:nth-child(3){animation-delay:.24s}
.is-active .grade-spectrum{animation:spectrum-open 1.4s .15s var(--software-ease) both}
.layer-frame{width:124px;height:78px;position:absolute;left:calc(50% - 62px);top:17px;border:1px solid #ccc;border-radius:5px;background:#fff}
.layer-back{background:repeating-conic-gradient(#f1f1ef 0% 25%,#fff 0% 50%) 0 0/12px 12px;transform:translate(-15px,10px) rotate(-7deg)}
.layer-middle{background:#ac946944;transform:translate(8px,2px) rotate(4deg);border-color:#aa946766}
.layer-front{overflow:hidden;transform:translate(18px,-9px) rotate(10deg)}
.layer-front img{width:100%;height:100%;object-fit:cover}
.is-active .layer-back{animation:layer-back 1.2s var(--software-ease) both}.is-active .layer-middle{animation:layer-middle 1.2s .12s var(--software-ease) both}.is-active .layer-front{animation:layer-front 1.2s .2s var(--software-ease) both}
.demo-light{width:min(100%,170px);height:102px;overflow:hidden;border-radius:6px}
.demo-light>img,.light-after,.light-after img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.demo-light>img{filter:saturate(.12) brightness(.75)}
.light-after{clip-path:inset(0 12% 0 0)}
.light-divider{position:absolute;left:88%;top:0;bottom:0;width:1px;background:#fff9}
.is-active .light-after{animation:light-reveal 1.6s .1s var(--software-ease) both}.is-active .light-divider{animation:light-pass 1.6s .1s var(--software-ease) both}
.draw-paper{width:112px;height:112px;position:relative;overflow:visible}
.draw-paper img{display:block;height:100%;width:100%;object-fit:contain;position:static}
.is-active .draw-paper img{animation:draw-reveal 1.7s .12s var(--software-ease) both}
.model-cube{width:54px;height:54px;position:relative;transform-style:preserve-3d;transform:rotateX(-22deg) rotateY(-32deg)}
.cube-face{position:absolute;inset:0;border:1px solid #799594;background-color:#a9c5c133;background-image:linear-gradient(#79959466 1px,transparent 1px),linear-gradient(90deg,#79959466 1px,transparent 1px);background-size:18px 18px;backface-visibility:hidden}
.cube-front{transform:translateZ(27px)}.cube-back{transform:rotateY(180deg) translateZ(27px)}.cube-right{transform:rotateY(90deg) translateZ(27px)}.cube-left{transform:rotateY(-90deg) translateZ(27px)}.cube-top{transform:rotateX(90deg) translateZ(27px)}.cube-bottom{transform:rotateX(-90deg) translateZ(27px)}
.cube-top{background-color:#dfe8e699}.cube-right{background-color:#8eaba7aa}
.model-baseline{position:absolute;bottom:4px;width:100px;height:1px;background:#c9d3d1}
.is-active .demo-model .model-cube{animation:model-build 1.6s var(--software-ease) both}.is-active .demo-model .cube-face{animation:model-surface 1.8s var(--software-ease) both}
.demo-orbit .cube-face{background-image:none;background-color:#dbb378;border-color:#a58050}.demo-orbit .cube-front{background-color:#edd0a4}.demo-orbit .cube-top{background-color:#f5e1bd}.demo-orbit .cube-right{background-color:#c28e4c}
.is-active .demo-orbit .model-cube{animation:object-orbit 2.4s var(--software-ease) both}
.demo-world{width:min(100%,180px);height:104px;overflow:hidden;border-radius:6px;background:#17191b}
.demo-world img{width:100%;height:100%;object-fit:cover;filter:brightness(1)}
.world-scan{position:absolute;inset:0;background:linear-gradient(110deg,transparent 25%,#f8dfa42e 49%,transparent 72%);mix-blend-mode:screen;transform:translateX(100%)}
.is-active .demo-world img{animation:world-light 1.8s var(--software-ease) both}.is-active .world-scan{animation:world-scan 1.8s .1s var(--software-ease) both}
#software-dialog{width:min(520px,calc(100% - 32px));padding:64px 44px 44px;border-radius:26px;text-align:center;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px)}
#software-dialog::backdrop{background:#25252244;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
#software-dialog[open]{animation:software-sheet-in .42s cubic-bezier(.22,.75,.2,1)}
#software-dialog[open]::backdrop{animation:software-backdrop-in .3s ease both}
#software-dialog[open].is-closing{animation:software-sheet-out .22s ease-in both;pointer-events:none}
#software-dialog[open].is-closing::backdrop{animation:software-backdrop-out .22s ease-in both}
#software-dialog.is-active .software-dialog-identity{animation:software-content-in .45s .06s both}
#software-dialog.is-active #software-dialog-purpose{animation:software-content-in .4s .14s both}
#software-dialog.is-active #software-dialog-description{animation:software-content-in .4s .2s both}
#close-software{position:absolute;top:14px;right:14px;font-size:1.5rem}
.software-dialog-identity{display:grid;justify-items:center;gap:20px}
#software-dialog-logo{width:80px;height:80px;object-fit:contain}
#software-dialog-title{font-size:1.75rem;line-height:1.3;letter-spacing:-.025em;overflow-wrap:anywhere}
#software-dialog-demo{height:164px;display:grid;place-items:center;perspective:600px;margin-top:18px}
#software-dialog-demo .demo-scene{transform:scale(1.2)}
#software-dialog-purpose{font-size:1.0625rem;margin-top:8px}
#software-dialog-description{font-size:1rem;line-height:1.85;color:var(--secondary);margin-top:14px;text-wrap:pretty}
@keyframes logo-cut{0%{transform:translate(-4px,0)}35%{transform:translate(4px,-4px)}100%{transform:translateY(-8px)}}
@keyframes logo-grade{0%{transform:rotate(-9deg)}100%{transform:translateY(-8px) rotate(0)}}
@keyframes logo-layer{0%{transform:translateY(0)}50%{transform:translateY(-11px) rotate(-3deg)}100%{transform:translateY(-8px)}}
@keyframes logo-light{0%{filter:brightness(.82);transform:translateY(0)}100%{filter:brightness(1);transform:translateY(-8px)}}
@keyframes logo-draw{0%{transform:rotate(-6deg)}55%{transform:translateY(-8px) rotate(3deg)}100%{transform:translateY(-8px)}}
@keyframes logo-model{0%{transform:rotateY(-20deg)}100%{transform:translateY(-8px) rotateY(0)}}
@keyframes logo-scene{0%{transform:scale(.94)}100%{transform:translateY(-8px) scale(1)}}
@keyframes logo-orbit{0%{transform:rotate(-12deg)}100%{transform:translateY(-8px) rotate(0)}}
@keyframes timeline-pass{from{left:5%}to{left:91%}}@keyframes clip-join{from{transform:translateX(12px);opacity:.3}to{transform:none;opacity:1}}
@keyframes grade-turn{from{transform:rotate(-100deg);filter:saturate(.2)}to{transform:rotate(0);filter:saturate(1)}}@keyframes spectrum-open{from{transform:scaleX(.35);filter:saturate(.15)}to{transform:scaleX(1);filter:saturate(1)}}
@keyframes layer-back{from{transform:translate(0,0) rotate(0)}to{transform:translate(-15px,10px) rotate(-7deg)}}@keyframes layer-middle{from{transform:translate(0,0) rotate(0)}to{transform:translate(8px,2px) rotate(4deg)}}@keyframes layer-front{from{transform:translate(0,0) rotate(0)}to{transform:translate(18px,-9px) rotate(10deg)}}
@keyframes light-reveal{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 12% 0 0)}}@keyframes light-pass{from{left:0}to{left:88%}}
@keyframes draw-reveal{from{clip-path:inset(100% 0 0)}to{clip-path:inset(0)}}
@keyframes model-build{from{transform:rotateX(-22deg) rotateY(-70deg) scale(.78)}to{transform:rotateX(-22deg) rotateY(-32deg) scale(1)}}@keyframes model-surface{from{background-color:transparent;opacity:.35}to{opacity:1}}
@keyframes object-orbit{from{transform:rotateX(-18deg) rotateY(-125deg)}to{transform:rotateX(-22deg) rotateY(-32deg)}}
@keyframes world-light{from{filter:brightness(.45) saturate(.45)}to{filter:brightness(1) saturate(1)}}@keyframes world-scan{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@keyframes software-sheet-in{from{opacity:0;transform:translateY(35px)}to{opacity:1;transform:none}}
@keyframes software-sheet-out{from{opacity:1;transform:none}to{opacity:0;transform:translateY(36px)}}
@keyframes software-backdrop-in{from{opacity:0}to{opacity:1}}
@keyframes software-backdrop-out{from{opacity:1}to{opacity:0}}
@keyframes software-content-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:1000px){.skills-grid{column-gap:40px}.software-grid{column-gap:22px}.software-detail{padding-inline:0;min-height:275px}}
@media(max-width:800px){.skills-section{padding-top:90px}.software-section{padding-top:150px}.practice-heading{margin-bottom:62px}.skills-grid{column-gap:26px;row-gap:54px}.software-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:58px;row-gap:58px}.software-detail{max-width:270px;margin-inline:auto;min-height:254px}}
@media(hover:none),(pointer:coarse){.software-enhanced .software-detail{display:none}.software-grid{row-gap:70px}.software-trigger{padding-block:22px}.software-logo-wrap{transition:none}}
@media(max-width:600px){.skills-section{padding-top:84px}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 26px}.skill-icon{width:32px;height:32px;margin-bottom:20px}.skill-item h3{font-size:1.0625rem}.skill-item p{font-size:.875rem;line-height:1.85;margin-top:10px}.practice-heading{margin-bottom:56px}.practice-heading h2{font-size:2.125rem}.software-section{padding-top:132px;padding-bottom:80px}.software-section .practice-heading{margin-bottom:56px}.software-grid{column-gap:28px;row-gap:56px}.software-logo-wrap{width:82px;height:82px}.software-logo{width:70px;height:70px}.software-trigger{gap:20px;padding-inline:4px}.software-name{font-size:1rem}.software-detail{min-height:290px}.software-description{font-size:.875rem}.software-purpose{font-size:.875rem}#software-dialog{width:100%;max-width:520px;margin:auto auto 0;border-radius:28px 28px 0 0;padding:60px 28px max(38px,env(safe-area-inset-bottom));max-height:calc(100dvh - 24px)}#software-dialog-demo{height:180px}#software-dialog-description{max-width:340px;margin-inline:auto}#software-dialog::before{content:'';position:absolute;top:10px;left:calc(50% - 18px);width:36px;height:4px;border-radius:3px;background:#d2d2ce}}
@media(prefers-reduced-motion:reduce){.software-detail,.software-logo-wrap,.software-logo{transition:none!important}.software-card.is-active .software-logo-wrap{transform:none}.software-demo *,#software-dialog-demo *,#software-dialog[open]{animation:none!important}.software-detail{transform:none!important}}
@media(max-width:600px){#software-dialog{padding:64px 28px calc(32px + env(safe-area-inset-bottom,0px));max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px)}#software-dialog-demo{height:164px;margin-top:22px}#software-dialog-demo .demo-scene{transform:scale(1.15)}}
@media(max-height:560px){#software-dialog{padding-top:60px}#software-dialog-demo{height:126px;margin-top:14px}#software-dialog-demo .demo-scene{transform:none}.software-dialog-identity{gap:14px}#software-dialog-logo{width:64px;height:64px}#software-dialog-title{font-size:1.5rem}}
@media(prefers-reduced-motion:reduce){#software-dialog::backdrop,#software-dialog *{animation:none!important}}
