/* Optional cursor and motion enhancements. Respect pointer capability and accessibility. */
.social-link{display:inline-flex;align-items:center;gap:11px;max-width:100%;font-size:14px;font-weight:800;text-decoration:none;border:1px solid currentColor;border-radius:100px;padding:13px 17px;transition:background .2s,color .2s,transform .2s;margin:1px 0 0}.social-link:hover{background:var(--ink);color:var(--paper);transform:translateY(-2px)}.social-link:focus-visible,.footer-actions a:focus-visible{outline:3px solid currentColor;outline-offset:4px}.footer-actions{display:inline-flex;align-items:center;gap:22px}.footer-actions a:hover{text-decoration:underline;text-underline-offset:5px}/* Small, unobtrusive glow follows the native pointer. Never hides the cursor. */
.cursor-halo{display:none;position:fixed;z-index:1200;pointer-events:none;top:0;left:0;width:32px;height:32px;border-radius:50%;background:radial-gradient(circle,rgba(135,169,255,.23) 0%,rgba(135,169,255,.11) 40%,rgba(135,169,255,0) 75%);box-shadow:0 0 15px 3px rgba(135,169,255,.12);opacity:0;will-change:transform;transition:opacity .15s ease,box-shadow .2s ease;transform:translate3d(-100px,-100px,0)}
.cursor-halo.is-active{opacity:1}
.cursor-halo.is-hover{box-shadow:0 0 21px 5px rgba(135,169,255,.23)}
.cursor-dot{display:none!important}
.project-card{position:relative;isolation:isolate}.project-card:focus-within{outline:2px solid currentColor;outline-offset:3px}.project-card .project-more:hover{text-underline-offset:4px;letter-spacing:.2px}.btn,.project-more,.social-link{transition:transform .2s ease, background-color .2s ease, color .2s ease}.btn:hover{transform:translateY(-2px)}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.cursor-halo{display:block}.project-card.motion-ready{transition:transform .25s ease,box-shadow .25s ease;transform:perspective(1100px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) translateY(var(--lift,0px))}.project-card.motion-ready:hover{--lift:-5px;box-shadow:0 15px 35px #0002}}
@media(prefers-reduced-motion:no-preference){.reveal-on-scroll{opacity:0;transform:translateY(24px);transition:opacity .55s ease,transform .55s ease}.reveal-on-scroll.is-visible{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.reveal-on-scroll{opacity:1;transform:none}.cursor-halo,.cursor-dot{display:none!important}}

/* Simple, accessible wayfinding. Appears only after the visitor starts scrolling. */
html{scroll-padding-top:88px}
.page-steps{position:fixed;right:clamp(12px,2vw,28px);bottom:clamp(14px,3vw,28px);z-index:90;display:flex;align-items:center;gap:0;background:var(--paper);color:var(--ink);border:1px solid #85858588;border-radius:100px;box-shadow:0 8px 28px #0002;opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .22s ease,transform .22s ease,visibility .22s ease;overflow:hidden}
.page-steps.show{opacity:1;visibility:visible;transform:translateY(0)}
.page-steps .step-current{font-weight:700;font-size:11px;color:var(--muted);padding:0 14px 0 18px;max-width:105px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.page-steps a{padding:13px 14px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;min-height:44px;white-space:nowrap;transition:background-color .15s}
.page-steps a:hover,.page-steps a:focus-visible{background:var(--ink);color:var(--paper)}
.page-steps a:focus-visible{outline:2px solid currentColor;outline-offset:-3px}
.page-steps .step-top{font-size:18px;border-left:1px solid #85858555}
.page-steps .step-next[hidden]{display:none}
.header nav a,.header nav a.active{transition:color .2s ease}
@media(max-width:600px){.page-steps{bottom:12px;right:12px}.page-steps .step-current{display:none}.page-steps a{padding:12px 14px}.header nav.open{max-height:calc(100dvh - 68px);overflow:auto;box-shadow:0 14px 30px #0002}.header nav a{padding:10px 0}}
@media(prefers-reduced-motion:reduce){.page-steps{transition:none}}
