/* Motion enhances existing controls; the native cursor and hit targets remain intact. */
#cursor-effects {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 35;
}
.cursor-orbit {
  position: fixed;
  top: 0;
  left: 0;
  width: 30px;
  height: 30px;
  margin: -15px;
  border: 1px solid #c6b0ff88;
  border-radius: 50%;
  pointer-events: none;
  z-index: 36;
  opacity: 0;
  transition: opacity .2s, width .2s, height .2s, margin .2s, border-color .2s;
}
.cursor-orbit::after {
  content: '';
  position: absolute;
  inset: -8px;
  border: 1px dashed #c6b0ff38;
  border-radius: 50%;
  animation: cursor-orbit-spin 12s linear infinite;
}
.cursor-orbit.visible { opacity: .85; }
.cursor-orbit.over-control {
  width: 46px;
  height: 46px;
  margin: -23px;
  border-color: #d4f599aa;
}
.cursor-orbit.over-control::after { border-color: #d4f59944; }
.cursor-orbit.is-down { width: 20px; height: 20px; margin: -10px; }
.hero-art {
  transform: translate3d(var(--galaxy-x, 0px), var(--galaxy-y, 0px), 0) scale(1.04);
  transition: transform .6s cubic-bezier(.2,.7,.3,1), filter .8s;
}
.hero-copy > .eyebrow { animation: arrival .8s .05s both; }
.hero-copy > h1 { animation: arrival 1s .12s both; }
.hero-copy > p { animation: arrival 1s .22s both; }
.hero-actions { animation: arrival 1s .32s both; }
.orbit-note { animation: gentle-orbit 7s ease-in-out infinite; }
.note-two { animation-delay: -3.5s; }
.hero-copy h1 > span {
  background: linear-gradient(110deg, #c6b0ff 20%, #d5d3ff 40%, #96dacf 50%, #c6b0ff 65%);
  background-size: 260% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: spectral-drift 12s ease-in-out infinite;
}
.project-card, .profile-panel {
  position: relative;
  transform: perspective(900px) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg));
  transition: transform .32s ease-out, border-color .25s, box-shadow .25s, opacity .7s, translate .7s;
}
.project-card:hover {
  transform: perspective(900px) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg)) translateY(-4px);
  box-shadow: 0 16px 40px #0004;
}
.project-card::after, .profile-panel::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(260px circle at var(--light-x, 50%) var(--light-y, 50%), #c6b0ff19, transparent 75%);
  opacity: 0;
  pointer-events: none;
  transition: opacity .25s;
}
.project-card:hover::after, .profile-panel:hover::after { opacity: 1; }
.project-card:hover .project-orbit { animation: mission-orbit 5s linear infinite; }
.project-card:hover .project-symbol { animation: gentle-orbit 4s ease-in-out infinite; }
.button.primary, .warp-button {
  translate: var(--magnet-x, 0px) var(--magnet-y, 0px);
  transition: translate .22s ease-out, transform .2s, background .2s, border-color .2s;
}
.reveal-ready {
  opacity: 0;
  translate: 0 22px;
  transition: opacity .7s var(--reveal-delay, 0ms), translate .7s var(--reveal-delay, 0ms), transform .32s, border-color .25s;
}
.reveal-ready.revealed, .reveal-ready:focus-within { opacity: 1; translate: 0 0; }
.mission[open] .mission-body { animation: arrival .4s ease-out both; }
.dialog[open] { animation: dialog-arrival .25s ease-out both; }
@keyframes arrival { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: translateY(0); } }
@keyframes dialog-arrival { from { opacity: 0; transform: translateY(12px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes gentle-orbit { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-7px); } }
@keyframes spectral-drift { 0%,100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
@keyframes mission-orbit { to { transform: rotate(335deg); } }
@keyframes cursor-orbit-spin { to { transform: rotate(360deg); } }
.motion-off .cursor-orbit, .motion-off #cursor-effects { display: none; }
.motion-off .hero-art, .motion-off .project-card, .motion-off .profile-panel { transform: none !important; }
.motion-off .button, .motion-off .warp-button, .motion-off .reveal-ready { translate: none !important; }
.motion-off .reveal-ready { opacity: 1; }
.motion-off .hero-copy h1 > span { background: none; color: var(--purple); }
@media (hover: none), (pointer: coarse) {
  .cursor-orbit, #cursor-effects { display: none; }
  .project-card:hover { transform: none; }
  .hero-art { transform: none; }
  .button.primary, .warp-button { translate: none; }
}
@media (prefers-reduced-motion: reduce) {
  .cursor-orbit, #cursor-effects { display: none; }
  .hero-art, .project-card, .profile-panel { transform: none !important; }
  .button, .warp-button, .reveal-ready { translate: none !important; }
  .reveal-ready { opacity: 1; }
  .hero-copy h1 > span { background: none; color: var(--purple); }
}
