/* Separate pointer rotation, continuous rotation, and the existing 3D geometry. */
.interactive-sculpture{pointer-events:none;z-index:2}
.sculpture-grip{display:block;position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;border-radius:50%;background:transparent;color:var(--accent);cursor:grab;pointer-events:auto;touch-action:none;user-select:none;-webkit-tap-highlight-color:transparent;perspective:900px;transition:filter .25s ease}
.sculpture-grip:focus-visible{outline:2px dashed var(--accent);outline-offset:8px}
.sculpture-grip:hover{filter:drop-shadow(0 0 10px var(--mood-glow,#d8fd6728))}
.is-dragging .sculpture-grip{cursor:grabbing;transition:none;filter:brightness(1.3) drop-shadow(0 0 15px var(--mood-glow,#d8fd6740))}
.sculpture-spin{display:block;position:relative;width:100%;height:100%;pointer-events:none;animation:sculpture-full-turn 26s linear infinite;animation-play-state:paused;transform-style:preserve-3d}
.sculpture-running .sculpture-spin{animation-play-state:running}.is-dragging .sculpture-spin{animation-play-state:paused}
.interactive-sculpture .sculpture-core{animation:none}
.finale-sculpture .sculpture-grip{inset:20px auto auto 50%;width:280px;height:280px;margin-left:-140px}
.finale-sculpture .sculpture-spin{animation-duration:32s}
.finale-sculpture.interactive-sculpture .finale-orb{position:relative;left:0;top:0;margin:0;width:100%;height:100%}
@keyframes sculpture-full-turn{from{rotate:0deg}to{rotate:360deg}}
@media(max-width:760px){.service-sculpture.interactive-sculpture{position:relative;right:auto;top:auto;width:220px;height:220px;margin:0 auto 30px;opacity:.7}.services .section-heading{margin-bottom:50px}}
@media(max-width:700px){.finale-sculpture .sculpture-grip{top:0;width:220px;height:220px;margin-left:-110px}}
@media(prefers-reduced-motion:reduce){.sculpture-spin{animation:none}.sculpture-grip{transition:none}}

/* A fixed hit area contains independently rotating geometry. */
.sculpture-rotation{display:block;width:100%;height:100%;transform-style:preserve-3d;transform:rotateX(var(--rotate-x,0deg)) rotateY(var(--rotate-y,0deg)) rotateZ(var(--manual-turn,0deg));transition:transform .35s ease;pointer-events:none}
.is-dragging .sculpture-rotation{transition:none}
.finale-sculpture.interactive-sculpture .aperture-sculpture{animation:none;transform:rotateX(24deg) rotateY(-20deg);transform-style:preserve-3d}
.aperture-sculpture i:nth-child(n){inset:12%;border-radius:18% 68% 20% 65%;border:1px solid color-mix(in srgb,var(--accent) 75%,white);opacity:.88;background:linear-gradient(135deg,#ffffff65,var(--accent) 35%,#11170f 85%);box-shadow:inset 2px 3px 8px #ffffff35,0 8px 18px #0008;transform:rotateZ(calc(var(--blade)*36deg)) rotateY(52deg) translateZ(32px);transform-origin:50% 50%}
.aperture-sculpture span{inset:36%;transform:translateZ(65px);border:1px solid var(--accent);background:radial-gradient(circle at 35% 30%,#fff,var(--accent) 20%,#12170f 72%);box-shadow:0 0 35px var(--mood-glow,#d8fd6740)}
@media(prefers-reduced-motion:reduce){.sculpture-rotation{transition:none}}

.is-coasting .sculpture-rotation{transition:none}
.services.has-elastic-grid::before{opacity:0}
.elastic-grid{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;display:none;mask-image:linear-gradient(#000, #0008 75%,transparent)}
.has-elastic-grid .elastic-grid{display:block}
