CSS
.cbgp-orbit { position: relative; width: 60px; height: 60px; }
.cbgp-orbit-toggle {
position: absolute;
width: 1px; height: 1px; margin: -1px; padding: 0;
overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
.cbgp-orbit-main, .cbgp-orbit-child {
position: absolute;
display: flex; align-items: center; justify-content: center;
text-decoration: none;
cursor: pointer;
user-select: none;
}
.cbgp-orbit-main {
z-index: 2;
bottom: 0; left: 0;
width: 56px; height: 56px;
border-radius: 50%;
background: radial-gradient(circle at 30% 30%, #00ffe0 0%, #006e62 100%);
color: #001f1c;
box-shadow:
0 0 0 0 rgba(0,255,224,0.4),
0 8px 22px rgba(0,255,224,0.35),
inset 0 -3px 6px rgba(0,0,0,0.25);
transition: transform 0.4s cubic-bezier(.34,1.56,.64,1), box-shadow 0.3s;
}
.cbgp-orbit-plus {
font: 800 28px/1 ui-monospace, monospace;
transition: transform 0.4s cubic-bezier(.34,1.56,.64,1);
}
.cbgp-orbit-ring {
position: absolute; inset: -4px;
border-radius: 50%;
border: 2px solid #00ffe0;
opacity: 0;
transition: opacity 0.3s, transform 0.6s cubic-bezier(.65,0,.35,1);
}
.cbgp-orbit-toggle:focus-visible + .cbgp-orbit-main { outline: 2px solid #ff5af1; outline-offset: 4px; }
.cbgp-orbit-toggle:checked + .cbgp-orbit-main {
box-shadow:
0 0 0 4px rgba(0,255,224,0.18),
0 8px 28px rgba(0,255,224,0.55),
inset 0 -3px 6px rgba(0,0,0,0.25);
}
.cbgp-orbit-toggle:checked + .cbgp-orbit-main .cbgp-orbit-plus { transform: rotate(135deg); }
.cbgp-orbit-toggle:checked + .cbgp-orbit-main .cbgp-orbit-ring { opacity: 1; transform: scale(1.4); }
.cbgp-orbit-child {
z-index: 1;
bottom: 8px; left: 8px;
width: 40px; height: 40px;
border-radius: 50%;
background: rgba(8,10,18,0.92);
border: 1.5px solid rgba(0,255,224,0.4);
color: #00ffe0;
font-size: 14px;
opacity: 0;
pointer-events: none;
transform: scale(0.4);
transition:
transform 0.5s cubic-bezier(.34,1.56,.64,1),
opacity 0.3s,
background 0.2s;
}
.cbgp-orbit-child svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.cbgp-orbit-toggle:checked ~ .cbgp-orbit-child {
opacity: 1;
pointer-events: auto;
}
/* Curved arc deployment: each child arrives at a different angle around the FAB */
.cbgp-orbit-toggle:checked ~ .cbgp-orbit-c1 { transform: translate(0, -68px) scale(1); }
.cbgp-orbit-toggle:checked ~ .cbgp-orbit-c2 { transform: translate(50px, -50px) scale(1); }
.cbgp-orbit-toggle:checked ~ .cbgp-orbit-c3 { transform: translate(68px, 0) scale(1); }
.cbgp-orbit-child:hover {
background: rgba(0,255,224,0.18);
border-color: #00ffe0;
color: #c8fffa;
}
@media (prefers-reduced-motion: reduce) {
.cbgp-orbit-main, .cbgp-orbit-child, .cbgp-orbit-plus, .cbgp-orbit-ring { transition: none; }
}