/* 三指机械光标：仅 transform / opacity 动画。由运行时添加根类才隐藏系统指针。 */
html.oc-cursor-enabled,html.oc-cursor-enabled *{cursor:none!important}
.oc-mechanical-cursor,.oc-cursor-trail{--oc-active:var(--oc-mint);position:fixed;left:0;top:0;pointer-events:none!important;user-select:none;z-index:10000}
.oc-mechanical-cursor{width:var(--oc-size,32px);height:calc(var(--oc-size,32px)*1.1);opacity:0;contain:layout style;transform:translate3d(-100px,-100px,0);will-change:transform;isolation:isolate}
.oc-cursor-enabled .oc-mechanical-cursor{transition:opacity .12s ease}
.oc-mechanical-cursor>svg{width:100%;height:100%;display:block;overflow:visible}
.oc-cursor-trail{width:0;height:0;z-index:9999}
.oc-footprint{position:absolute;left:0;top:0;width:8px;height:8px;opacity:0;color:var(--oc-mint);pointer-events:none!important}
.oc-footprint>svg{width:100%;height:100%;display:block;overflow:visible}
.oc-module-knowledge{--oc-active:var(--oc-mint);color:var(--oc-mint)}.oc-module-github{--oc-active:var(--oc-lilac);color:var(--oc-lilac)}.oc-module-social{--oc-active:var(--oc-pink);color:var(--oc-pink)}.oc-module-deconstruct{--oc-active:var(--oc-core);color:var(--oc-core)}
.oc-hand-pose{transform-origin:22px 27px;transition:transform .16s ease-out}.oc-finger,.oc-joint{transition:transform .16s ease-out}.oc-thumb{transform-origin:14px 28px}.oc-index{transform-origin:19px 21px}.oc-middle{transform-origin:29px 20px}.oc-thumb-tip{transform-origin:7px 20px}.oc-index-tip{transform-origin:18px 12px}.oc-middle-tip{transform-origin:30px 12px}
.oc-tip-light{animation:oc-tip-breath 2.5s ease-in-out infinite}.oc-read-line,.oc-press-ring{opacity:0}.oc-read-line{transform-origin:19px 0}.oc-press-ring{transform-origin:22px 18px}
.oc-state-idle .oc-index{animation:oc-idle-finger 2.8s ease-in-out infinite}.oc-state-idle .oc-thumb{animation:oc-idle-finger 2.8s ease-in-out -.9s infinite}
.oc-state-interactive .oc-thumb{transform:rotate(-12deg)}.oc-state-interactive .oc-index{transform:rotate(-7deg) translateY(-1px)}.oc-state-interactive .oc-middle{transform:rotate(9deg)}
.oc-state-knowledge .oc-index{transform:translateY(-2px)}.oc-state-knowledge .oc-middle{transform:rotate(-12deg) translateY(3px)}.oc-state-knowledge .oc-thumb{transform:rotate(12deg)}.oc-state-knowledge .oc-read-line{animation:oc-read-scan .8s ease-in-out infinite}
.oc-state-github .oc-index{animation:oc-type-index .32s ease-in-out infinite}.oc-state-github .oc-middle{animation:oc-type-index .32s ease-in-out -.16s infinite}.oc-state-github .oc-thumb{transform:rotate(10deg)}
.oc-state-social .oc-thumb{transform:rotate(-18deg)}.oc-state-social .oc-index{transform:rotate(-9deg)}.oc-state-social .oc-middle{transform:rotate(13deg)}.oc-state-social .oc-hand-pose{transform:rotate(-7deg)}
.oc-state-deconstruct .oc-thumb{transform:rotate(22deg)}.oc-state-deconstruct .oc-index{transform:rotate(12deg) translateY(2px)}.oc-state-deconstruct .oc-middle{transform:rotate(-16deg) translateY(2px)}.oc-state-deconstruct .oc-index-tip{transform:rotate(20deg)}
.oc-scroll-up .oc-hand-pose{transform:rotate(-10deg) translateY(-1px)}.oc-scroll-down .oc-hand-pose{transform:rotate(10deg) translateY(1px)}
.oc-pressed .oc-thumb{animation:none;transform:rotate(27deg)}.oc-pressed .oc-index{animation:none;transform:rotate(18deg) translateY(4px)}.oc-pressed .oc-middle{animation:none;transform:rotate(-22deg) translateY(4px)}.oc-pressed .oc-press-ring{animation:oc-click-ring .28s ease-out both}
.oc-state-interactive .oc-tip-light,.oc-state-knowledge .oc-tip-light,.oc-state-github .oc-tip-light,.oc-state-social .oc-tip-light,.oc-state-deconstruct .oc-tip-light{animation:none;opacity:1}
@keyframes oc-idle-finger{0%,100%{transform:rotate(0)}50%{transform:rotate(4deg) translateY(1px)}}@keyframes oc-tip-breath{0%,100%{opacity:.6}50%{opacity:1}}@keyframes oc-type-index{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(3px) rotate(8deg)}}@keyframes oc-read-scan{0%,100%{opacity:.25;transform:translateY(0) scaleX(.65)}50%{opacity:.85;transform:translateY(-3px) scaleX(1)}}@keyframes oc-click-ring{0%{opacity:.65;transform:scale(.35)}100%{opacity:0;transform:scale(1.2)}}
html:not(.oc-cursor-enabled) .oc-mechanical-cursor *{animation-play-state:paused!important}
@media(pointer:coarse),(prefers-reduced-motion:reduce){html.oc-cursor-enabled,html.oc-cursor-enabled *{cursor:revert!important}.oc-mechanical-cursor,.oc-cursor-trail{display:none!important}}
