.cursor-halo { position: fixed; width: 54px; height: 54px; border-radius: 50%; background: radial-gradient(circle, #93486426 0, #ad62841c 28%, #ce74980c 48%, transparent 72%); transform: translate(-50%,-50%); pointer-events: none; z-index: 100; opacity: 0; transition: opacity .18s; mix-blend-mode: multiply; }
.cursor-halo.visible { opacity: 1; }
.celebration { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 101; }
#mascot { cursor: pointer; touch-action: manipulation; }
#mascot:focus-visible { outline: 2px solid var(--rose); outline-offset: 8px; }
.sensor-controls { display: flex; justify-content: flex-end; align-items: center; gap: 12px; padding-bottom: 24px; }
.sensor-controls:has(button[hidden]) { display: none; }
.sensor-controls p { font-size: 11px; color: var(--muted); margin: 0; max-width: 300px; }
.sensor-controls button:disabled { opacity: .6; cursor: wait; }
.still .cursor-halo, .hidden-tab .cursor-halo { display: none; }
.still .scene > svg { transform: none; }
.still .toy-flower { transition: none; }
.animation-offscreen svg, .animation-offscreen svg * { animation-play-state: paused !important; }
.mobile-effects #scene .float, .mobile-effects #scene .sway, .mobile-effects #scene .twinkle, .mobile-effects .mini-scene svg * { animation: none; }
.mobile-effects #scene > svg { animation: mobile-float 8s ease-in-out infinite; }
.mobile-effects #scene.hello > svg { animation: hello 1.6s ease-in-out; }
.mobile-effects #scene.hello #mascot { animation: none; }
.mobile-effects .is-playing .toy-squish { animation: squish .8s var(--ease); }
.mobile-effects .is-playing .toy-cloud { animation: cloud-trip 1.4s var(--ease); }
@keyframes mobile-float { 50% { transform: translateY(-5px); } }
@media (pointer: coarse) { .cursor-halo { display: none; } }
@media (max-width: 760px) { .sensor-controls { justify-content: flex-start; flex-wrap: wrap; gap: 8px 12px; padding-bottom: 24px; }.sensor-controls p { font-size: 10px; } }
@media (prefers-reduced-motion: reduce) { .cursor-halo, .celebration { display: none; } }
