/* Gallery plates are interactive controls; a hold must not select their media or labels. */
.ds-touch-orbit .showcase,.ds-touch-orbit .showcase *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.ds-touch-orbit .showcase img,.ds-touch-orbit .showcase video{-webkit-user-drag:none}
.touch-light{position:fixed;inset:auto;left:0;top:0;width:132px;height:132px;margin:0;padding:0;border:0;border-radius:50%;pointer-events:none!important;user-select:none;z-index:2147483647;opacity:0;transform:translate3d(-200px,-200px,0);transition:opacity 70ms linear;contain:strict;overflow:hidden;background:transparent;isolation:isolate;mix-blend-mode:normal}
.touch-light *{pointer-events:none!important}
.touch-light::backdrop{background:transparent;pointer-events:none!important}
.touch-light[data-active=true]{opacity:1;transition:none;will-change:transform,opacity}
.touch-light__core{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,rgba(158,84,248,.10) 0%,rgba(155,75,248,.24) 24%,rgba(150,65,245,.15) 44%,rgba(143,60,240,.045) 66%,transparent 78%);transform-origin:center}
.touch-light__core::after{content:"";position:absolute;inset:34px;border:1.5px solid rgba(236,215,255,.86);border-radius:50%;background:rgba(151,66,243,.045);box-shadow:0 0 0 1px rgba(69,19,123,.62),0 0 11px 2px rgba(154,70,249,.48),inset 0 0 0 1px rgba(135,53,226,.62)}
.touch-light__wave{position:absolute;inset:25px;border:1px solid rgba(191,133,255,.68);border-radius:50%;box-shadow:0 0 0 1px rgba(74,21,131,.36);opacity:0;transform-origin:center}
.touch-light__orbit{display:none}
.touch-light:is([data-active=true],[data-fading=true]) .touch-light__core{animation:touch-breathe 1.8s ease-in-out infinite;will-change:transform,opacity}
.touch-light:is([data-active=true],[data-fading=true]) .touch-light__wave{animation:touch-wave 1.8s ease-out infinite;will-change:transform,opacity}
@keyframes touch-breathe{0%,100%{transform:scale(.96);opacity:.90}50%{transform:scale(1.04);opacity:1}}
@keyframes touch-wave{0%{transform:scale(.70);opacity:.48}82%,100%{transform:scale(1.28);opacity:0}}
@keyframes touch-breathe-quiet{0%,100%{opacity:.92}50%{opacity:1}}
html[data-theme=light] .touch-light__core{background:radial-gradient(circle,rgba(122,47,223,.08) 0%,rgba(127,50,229,.19) 24%,rgba(130,51,229,.10) 44%,rgba(133,53,231,.028) 66%,transparent 78%)}
html[data-touch-style=orbit] .touch-light__core{background:radial-gradient(circle,rgba(174,121,255,.06) 0%,rgba(153,82,249,.16) 28%,rgba(139,63,243,.09) 49%,transparent 73%)}
html[data-touch-style=orbit] .touch-light__core::before{content:"";position:absolute;inset:15px;background:linear-gradient(#dabaff,#dabaff) 50% 0/1px 7px,linear-gradient(#dabaff,#dabaff) 50% 100%/1px 7px,linear-gradient(#dabaff,#dabaff) 0 50%/7px 1px,linear-gradient(#dabaff,#dabaff) 100% 50%/7px 1px;background-repeat:no-repeat;opacity:.75}
html[data-touch-style=orbit] .touch-light__core::after{inset:37px;border-width:1px;border-color:rgba(235,216,255,.90);background:transparent;box-shadow:0 0 0 1px rgba(54,14,109,.70),0 0 13px rgba(160,87,255,.60),inset 0 0 8px rgba(157,81,255,.16)}
html[data-touch-style=orbit] .touch-light__wave{inset:26px;border-width:2px;border-color:transparent rgba(208,166,255,.90);box-shadow:none;opacity:.88}
html[data-touch-style=orbit] .touch-light__orbit{display:block;position:absolute;inset:14px;border:1px dashed rgba(175,116,255,.70);border-inline-color:transparent;border-radius:50%;opacity:.8}
html[data-touch-style=orbit] .touch-light__orbit::before,html[data-touch-style=orbit] .touch-light__orbit::after{content:"";position:absolute;left:calc(50% - 2px);width:4px;height:4px;background:#e1c4ff;border-radius:50%;box-shadow:0 0 0 1px #4b1c82,0 0 6px 2px #a45df0}
html[data-touch-style=orbit] .touch-light__orbit::before{top:-2px}
html[data-touch-style=orbit] .touch-light__orbit::after{bottom:-2px}
html[data-touch-style=orbit] .touch-light:is([data-active=true],[data-fading=true]) .touch-light__wave{animation:digital-orbit-spin 3.2s linear infinite;will-change:transform}
html[data-touch-style=orbit] .touch-light:is([data-active=true],[data-fading=true]) .touch-light__orbit{animation:digital-orbit-spin 6.4s linear reverse infinite;will-change:transform}
html[data-touch-style=orbit] .touch-light[data-fading=true]{transition:opacity 320ms cubic-bezier(.22,.61,.36,1);will-change:opacity}
@keyframes digital-orbit-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
html[data-theme=light][data-touch-style=orbit] .touch-light__core{background:radial-gradient(circle,rgba(126,52,225,.045),rgba(126,52,225,.13) 30%,rgba(126,52,225,.05) 50%,transparent 73%)}
html[data-theme=light][data-touch-style=orbit] .touch-light__core::before{filter:brightness(.67)}
@media(prefers-reduced-motion:reduce){.touch-light{transition:none}.touch-light:is([data-active=true],[data-fading=true]) .touch-light__core{animation:touch-breathe-quiet 2.6s ease-in-out infinite!important}.touch-light:is([data-active=true],[data-fading=true]) .touch-light__wave{animation:none!important;transform:scale(.88);opacity:.22}}
@media(prefers-reduced-motion:reduce){html[data-touch-style=orbit] .touch-light:is([data-active=true],[data-fading=true]) .touch-light__wave{animation:none!important;transform:rotate(24deg);opacity:.75}html[data-touch-style=orbit] .touch-light:is([data-active=true],[data-fading=true]) .touch-light__orbit{animation:none!important;transform:rotate(-12deg);opacity:.65}html[data-touch-style=orbit] .touch-light[data-fading=true]{transition:opacity 120ms cubic-bezier(.22,.61,.36,1)!important}}
