CSS
.ccm-svc {
--n: 6;
--ba: calc(360deg / var(--n));
--r: 105px;
--pa: 0deg;
position: relative;
width: 260px;
height: 260px;
display: flex;
align-items: center;
justify-content: center;
font-family: system-ui, sans-serif;
}
.ccm-svc-orbit {
position: absolute;
width: calc(var(--r) * 2);
height: calc(var(--r) * 2);
border-radius: 50%;
border: 1px dashed rgba(124, 108, 255, 0.18);
background: radial-gradient(circle at center, rgba(124, 108, 255, 0.08), transparent 70%);
}
.ccm-svc-disc {
position: relative;
width: 110px;
height: 110px;
border-radius: 50%;
background: linear-gradient(135deg, #7c6cff, #a78bfa);
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
box-shadow:
0 8px 24px rgba(124, 108, 255, 0.4),
inset 0 1px 0 rgba(255, 255, 255, 0.2);
z-index: 2;
}
.ccm-svc-title {
display: none;
font:
700 14px/1.2 system-ui,
sans-serif;
text-align: center;
padding: 0 12px;
}
.ccm-svc-cta {
display: block;
margin-top: 8px;
padding: 4px 10px;
font:
600 10px/1 ui-monospace,
monospace;
letter-spacing: 0.06em;
color: rgba(255, 255, 255, 0.85);
border: 1px solid rgba(255, 255, 255, 0.4);
border-radius: 999px;
cursor: pointer;
transition:
background 0.2s,
color 0.2s;
}
.ccm-svc-cta:hover {
background: #fff;
color: #7c6cff;
}
.ccm-svc:has(#ccm-svc-0:checked) .ccm-svc-t-0,
.ccm-svc:has(#ccm-svc-1:checked) .ccm-svc-t-1,
.ccm-svc:has(#ccm-svc-2:checked) .ccm-svc-t-2,
.ccm-svc:has(#ccm-svc-3:checked) .ccm-svc-t-3,
.ccm-svc:has(#ccm-svc-4:checked) .ccm-svc-t-4,
.ccm-svc:has(#ccm-svc-5:checked) .ccm-svc-t-5 {
display: block;
}
.ccm-svc-pointer {
position: absolute;
width: 12px;
height: 12px;
border-radius: 50%;
background: #fff;
border: 2px solid #7c6cff;
box-shadow: 0 0 0 4px rgba(124, 108, 255, 0.18);
transform: rotate(var(--pa)) translateY(calc(var(--r) * -0.55));
transform-origin: 50% 50%;
transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
z-index: 3;
}
.ccm-svc:has(#ccm-svc-0:checked) {
--pa: 0deg;
}
.ccm-svc:has(#ccm-svc-1:checked) {
--pa: 60deg;
}
.ccm-svc:has(#ccm-svc-2:checked) {
--pa: 120deg;
}
.ccm-svc:has(#ccm-svc-3:checked) {
--pa: 180deg;
}
.ccm-svc:has(#ccm-svc-4:checked) {
--pa: 240deg;
}
.ccm-svc:has(#ccm-svc-5:checked) {
--pa: 300deg;
}
.ccm-svc-sat {
position: absolute;
width: 44px;
height: 44px;
border-radius: 50%;
background: #1f1f2e;
border: 1px solid rgba(124, 108, 255, 0.4);
color: #c4b5fd;
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
transform: rotate(calc(var(--i) * var(--ba))) translateY(calc(var(--r) * -1))
rotate(calc(var(--i) * var(--ba) * -1));
transition:
background 0.25s,
color 0.25s,
transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
box-shadow 0.25s;
z-index: 4;
}
.ccm-svc-sat span {
font-size: 18px;
line-height: 1;
}
.ccm-svc-sat:hover,
.ccm-svc-sat:focus-visible {
background: #2a2a3e;
color: #fff;
transform: rotate(calc(var(--i) * var(--ba))) translateY(calc(var(--r) * -1))
rotate(calc(var(--i) * var(--ba) * -1)) scale(1.15);
}
.ccm-svc:has(#ccm-svc-0:checked) [for="ccm-svc-0"],
.ccm-svc:has(#ccm-svc-1:checked) [for="ccm-svc-1"],
.ccm-svc:has(#ccm-svc-2:checked) [for="ccm-svc-2"],
.ccm-svc:has(#ccm-svc-3:checked) [for="ccm-svc-3"],
.ccm-svc:has(#ccm-svc-4:checked) [for="ccm-svc-4"],
.ccm-svc:has(#ccm-svc-5:checked) [for="ccm-svc-5"] {
background: #7c6cff;
color: #fff;
border-color: #fff;
box-shadow: 0 0 0 4px rgba(124, 108, 255, 0.3);
transform: rotate(calc(var(--i) * var(--ba))) translateY(calc(var(--r) * -1))
rotate(calc(var(--i) * var(--ba) * -1)) scale(1.15);
}