/* ==========================================
   PERFORMANCE OPTIMIZATIONS
   ========================================== */

/* Hint browser about animated properties */
.orbital-wrapper,
.segment-inner,
.satellite-icon,
.carousel-segment {
    will-change: transform;
}

.watch-hand {
    will-change: transform;
}

/* Reduce expensive effects on mobile */
@media (max-width: 768px) {
    /* Disable GPU-intensive filters on mobile */
    [filter*="Glow"],
    [filter*="glow"],
    [filter*="blur"],
    .mini-chart svg [filter] {
        filter: none !important;
    }
    
    /* Simplify shadows on mobile */
    .carousel-segment {
        box-shadow: none !important;
    }
    
    .carousel-segment:hover {
        box-shadow: 0 0 10px rgba(0, 212, 255, 0.3) !important;
    }
}

/* ==========================================
   SATELLITE STYLES (Visuals Only)
   ========================================== */

/* --- Google Satellite --- */
.google-orbiter {
    width: 30px;
    height: 30px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.4);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(5px);
}

/* --- Coinbase Satellite --- */
.coinbase-orbiter {
    width: 30px;
    height: 30px;
    background: rgba(0, 82, 255, 0.1);
    border: 1px solid rgba(0, 82, 255, 0.4);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(5px);
}

/* --- Streamlit Satellite --- */
.streamlit-orbiter {
    width: 30px;
    height: 30px;
    background: rgba(255, 75, 75, 0.1);
    border: 1px solid rgba(255, 75, 75, 0.4);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(5px);
}

/* --- PowerBI Satellite --- */
.powerbi-orbiter {
    width: 30px;
    height: 30px;
    background: rgba(255, 240, 100, 0.1);
    border: 1px solid rgba(255, 200, 0, 0.4);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(5px);
}

/* --- Data Science Satellite --- */
.datascience-orbiter {
    width: 30px;
    height: 30px;
    background: rgba(0, 255, 136, 0.1);
    border: 1px solid rgba(0, 255, 136, 0.4);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(5px);
}

/* --- Around the World Satellite --- */
.aroundtheworld-orbiter {
    width: 30px;
    height: 30px;
    background: rgba(0, 212, 255, 0.1);
    border: 1px solid rgba(0, 212, 255, 0.4);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(5px);
}

/* ==========================================
   UNIFIED SATELLITE ANIMATION STYLES
   ========================================== */

/* Keyframe for the back-and-forth animation */
@keyframes travel-along-line {
    0%, 100% {
        transform: translate(-50%, -50%) translateX(55px);
    }
    50% {
        transform: translate(-50%, -50%) translateX(180px);
    }
}

/* Visual connecting line */
.connecting-line {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 200px;
    height: 1px;
    background: rgba(0, 212, 255, 0.2);
    transform-origin: left center;
    pointer-events: none;
    z-index: 0;
    opacity: 1 !important;
    transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Container for the satellite arm/path */
.satellite-arm {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 1px;
    height: 1px;
    pointer-events: none;
    z-index: 1;
    transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Wrapper for the icon to handle counter-rotation */
.satellite-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    animation: counterRotate 30s linear infinite;
}

/* Common properties for all orbiter bodies */
.google-orbiter,
.coinbase-orbiter,
.streamlit-orbiter,
.powerbi-orbiter,
.datascience-orbiter,
.aroundtheworld-orbiter {
    position: absolute;
    top: 0;
    left: 0;
    animation-name: travel-along-line;
    animation-timing-function: ease-in-out;
    animation-iteration-count: infinite;
    animation-duration: var(--travel-duration);
    animation-delay: var(--travel-delay);
}

/* ==========================================
   GENERAL PAGE AND CAROUSEL STYLES
   ========================================== */

body {
    margin: 0;
    padding: 0;
    min-height: 100vh;
    background: radial-gradient(ellipse at center top, #1a3a5c 0%, #0d1f2f 50%, #050a15 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

.page-container {
    width: 100%;
    max-width: 900px;
    height: 100vh;
    position: relative;
    overflow: hidden;
    transition: filter 0.5s ease-in-out;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.bg-grid {
    position: absolute;
    width: 150%;
    height: 150%;
    background-image: 
        linear-gradient(rgba(0, 212, 255, 0.02) 2px, transparent 2px),
        linear-gradient(90deg, rgba(0, 212, 255, 0.02) 2px, transparent 2px);
    background-size: 60px 60px;
    animation: gridFloat 30s linear infinite;
    transform: rotate(-15deg);
}

@keyframes gridFloat {
    0% { transform: translate(-60px, -60px) rotate(-15deg); }
    100% { transform: translate(0, 0) rotate(-15deg); }
}

.carousel-container {
    position: relative;
    width: 400px;
    height: 400px;
    max-width: 90vw;
    max-height: 90vw;
    margin: 5vh auto 0;
}

.carousel-ring {
    position: absolute;
    width: 100%;
    height: 100%;
    border: 3px solid rgba(255, 255, 255, 0.1);
    border-radius: 50%;
    box-shadow: 
        0 0 50px rgba(0, 212, 255, 0.3),
        inset 0 0 50px rgba(74, 158, 255, 0.2);
}

.orbital-wrapper {
    position: absolute;
    width: 100%;
    height: 100%;
    animation: orbitRotate 30s linear infinite;
    transition: none;
}

.orbital-wrapper.dragging {
    animation-play-state: paused !important;
    cursor: grabbing !important;
}

/* Paused state for when tab is hidden */
.orbital-wrapper.visibility-paused,
.orbital-wrapper.visibility-paused .carousel-segment,
.orbital-wrapper.visibility-paused .segment-inner,
.orbital-wrapper.visibility-paused .satellite-icon,
.orbital-wrapper.visibility-paused [class*="-orbiter"] {
    animation-play-state: paused !important;
}

@keyframes orbitRotate {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* ==========================================
   CAROUSEL SEGMENT STYLES
   ========================================== */

.carousel-segment {
    position: absolute;
    width: 80px;
    height: 80px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.05);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.1);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: visible;
    cursor: grab;
    user-select: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    opacity: 0;
    transform: translate(-50%, -50%) scale(0);
    transition: 
        transform 0.6s cubic-bezier(0.68, -0.55, 0.27, 1.55), 
        opacity 0.4s ease-out, 
        top 0.6s cubic-bezier(0.68, -0.55, 0.27, 1.55), 
        left 0.6s cubic-bezier(0.68, -0.55, 0.27, 1.55),
        border-color 0.3s,
        box-shadow 0.3s,
        background 0.3s;
    z-index: 2;
}

.carousel-segment.hidden {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0) !important;
    pointer-events: none;
}

.carousel-segment:active {
    cursor: grabbing;
}

.carousel-segment:hover {
    background: rgba(255, 255, 255, 0.08);
    border-color: rgba(0, 212, 255, 0.3);
    box-shadow: 0 0 20px rgba(0, 212, 255, 0.4);
}

.carousel-segment.no-link {
    cursor: grab;
}

.carousel-segment.dragging {
    cursor: grabbing !important;
    background: rgba(255, 255, 255, 0.1) !important;
    border-color: rgba(0, 212, 255, 0.5) !important;
    box-shadow: 0 0 30px rgba(0, 212, 255, 0.6) !important;
}

.viz-clipper {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    overflow: hidden;
    position: absolute;
    top: 0;
    left: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.segment-inner {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    animation: counterRotate 30s linear infinite;
    position: relative;
}

.orbital-wrapper.dragging .segment-inner,
.orbital-wrapper.dragging .satellite-icon {
    animation-play-state: paused !important;
}

@keyframes counterRotate {
    from { transform: rotate(0deg); }
    to { transform: rotate(-360deg); }
}

.segment-link {
    text-decoration: none;
    color: inherit;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.segment-title {
    position: absolute;
    top: 10px;
    font-size: 11px;
    color: rgba(255,255,255,0.7);
    letter-spacing: 1px;
    text-align: center;
    width: 100%;
    z-index: 2;
}

/* ==========================================
   VISUALIZATION STYLES
   ========================================== */

.mini-chart {
    width: 90%;
    height: 90%;
    position: relative;
    margin-top: 20px;
}

.bar-viz {
    display: flex;
    align-items: flex-end;
    justify-content: space-around;
    height: 100%;
    padding: 10px;
}

.bar {
    width: 15px;
    background: linear-gradient(180deg, #00d4ff, #0066cc);
    border-radius: 3px 3px 0 0;
    animation: barGrow 3s ease-in-out infinite;
}

@keyframes barGrow {
    0%, 100% { height: 40%; }
    50% { height: 80%; }
}

.line-viz {
    width: 100%;
    height: 100%;
}

.wave-path {
    stroke: #00ff88;
    stroke-width: 2;
    fill: none;
    animation: waveDraw 4s ease-in-out infinite;
}

@keyframes waveDraw {
    0% { stroke-dasharray: 0 300; }
    100% { stroke-dasharray: 300 0; }
}

.pie-viz {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    background: conic-gradient(
        #4a9eff 0deg 72deg,
        #00d4ff 72deg 144deg,
        #00ff88 144deg 216deg,
        #ff9e3d 216deg 288deg,
        #ff4444 288deg 360deg
    );
    animation: rotate 10s linear infinite;
}

@keyframes rotate {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* ==========================================
   CENTER CORE STYLES
   ========================================== */

.center-core {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 180px;
    height: 180px;
    background: radial-gradient(circle, rgba(0, 212, 255, 0.2), transparent 70%);
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    animation: pulse 3s ease-in-out infinite;
    z-index: 10;
}

@keyframes pulse {
    0%, 100% { transform: translate(-50%, -50%) scale(1); }
    50% { transform: translate(-50%, -50%) scale(1.1); }
}

.core-value {
    font-size: 28px;
    font-weight: 100;
    color: #00d4ff;
    text-shadow: 0 0 20px rgba(0, 212, 255, 0.8);
}

.core-label {
    font-size: 10px;
    letter-spacing: 3px;
    color: rgba(255, 255, 255, 0.5);
    margin-top: 10px;
}

.core-link {
    text-decoration: none;
    color: inherit;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.core-click-me {
    font-size: 14px;
    font-weight: 100;
    letter-spacing: 2px;
    color: rgba(255, 255, 255, 0.4);
    margin-top: -2px;
    text-transform: lowercase;
    animation: clickMePulse 2s ease-in-out infinite;
}

@keyframes clickMePulse {
    0%, 100% { 
        opacity: 0.4;
        transform: translateY(0);
    }
    50% { 
        opacity: 0.8;
        transform: translateY(-2px);
    }
}

/* ==========================================
   ORBIT DECORATIVE ELEMENTS
   ========================================== */

.mini-bars {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    height: 60px;
    margin-top: 20px;
    width: 80%;
}

.mini-bar {
    width: 8px;
    background: linear-gradient(180deg, #00ff88, #00aa55);
    border-radius: 2px;
}

.orbit-dot {
    position: absolute;
    width: 6px;
    height: 6px;
    background: white;
    border-radius: 50%;
    box-shadow: 0 0 10px rgba(255, 255, 255, 0.8);
}

.orbit-container {
    position: absolute;
    width: 100%;
    height: 100%;
    animation: rotate 15s linear infinite;
}

.orbit-container2 {
    animation: rotate 20s linear infinite reverse;
}

.orbit-container3 {
    animation: rotate 25s linear infinite;
}

.flow-line {
    position: absolute;
    height: 2px;
    background: linear-gradient(90deg, transparent, #00d4ff, transparent);
    animation: flowLine 3s ease-in-out infinite;
}

@keyframes flowLine {
    0%, 100% { opacity: 0; transform: translateX(-50px); }
    50% { opacity: 1; transform: translateX(50px); }
}

/* ==========================================
   GRAB INDICATOR STYLES
   ========================================== */

@keyframes grabPulse {
    0%, 100% { 
        transform: translateX(-50%) scale(1);
        opacity: 0.8;
    }
    50% { 
        transform: translateX(-50%) scale(1.2);
        opacity: 1;
    }
}

.grab-me-segment {
    border: 2px solid rgba(0, 255, 136, 0.3) !important;
    border-radius: 50%;
    animation: grabGlow 3s ease-in-out infinite !important;
}

@keyframes grabGlow {
    0%, 100% {
        box-shadow: 
            0 0 20px rgba(0, 212, 255, 0.4),
            0 0 40px rgba(0, 255, 136, 0.2);
    }
    50% {
        box-shadow: 
            0 0 30px rgba(0, 212, 255, 0.6),
            0 0 60px rgba(0, 255, 136, 0.4),
            inset 0 0 20px rgba(0, 255, 136, 0.1);
    }
}

.grab-indicator {
    position: absolute;
    bottom: 10px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 24px;
    color: #00ff88;
    animation: grabPulse 2s ease-in-out infinite;
    filter: drop-shadow(0 0 10px rgba(0, 255, 136, 0.8));
    cursor: grab;
}

/* ==========================================
   ATTRIBUTION
   ========================================== */

.attribution {
    position: absolute;
    bottom: 80px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(255, 255, 255, 0.03);
    backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 15px;
    padding: 12px 25px;
    font-size: 11px;
    color: rgba(160, 196, 228, 0.7);
    letter-spacing: 1px;
}

/* ==========================================
   FLASH EFFECT FOR SATELLITES
   ========================================== */

@keyframes flash-effect {
    0%, 100% {
        opacity: 0.8;
        transform: translate(-50%, -50%) scale(1.2);
    }
    8%, 92% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(1.5);
    }
    9%, 91% {
        transform: translate(-50%, -50%) scale(1);
    }
}

.google-orbiter::after,
.coinbase-orbiter::after,
.streamlit-orbiter::after,
.powerbi-orbiter::after,
.datascience-orbiter::after,
.aroundtheworld-orbiter::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    opacity: 0;
    animation-name: flash-effect;
    animation-timing-function: ease-out;
    animation-iteration-count: infinite;
    animation-duration: var(--travel-duration);
    animation-delay: var(--travel-delay);
}

.google-orbiter::after {
    box-shadow: 0 0 12px 4px rgba(255, 255, 255, 0.7);
}

.coinbase-orbiter::after {
    box-shadow: 0 0 12px 4px rgba(0, 82, 255, 0.7);
}

.streamlit-orbiter::after {
    box-shadow: 0 0 12px 4px rgba(255, 75, 75, 0.7);
}

.powerbi-orbiter::after {
    box-shadow: 0 0 12px 4px rgba(255, 200, 0, 0.7);
}

.datascience-orbiter::after {
    box-shadow: 0 0 12px 4px rgba(0, 255, 136, 0.7);
}

.aroundtheworld-orbiter::after {
    box-shadow: 0 0 12px 4px rgba(0, 212, 255, 0.7);
}

/* ==========================================
   WATCH HAND STYLES
   ========================================== */

.watch-hand {
    position: absolute;
    left: 50%;
    top: 50%;
    transform-origin: bottom center;
    background-color: rgba(0, 212, 255, 0.7);
    border-radius: 5px;
    box-shadow: 0 0 10px rgba(0, 212, 255, 0.5);
    z-index: 11;
    display: none;
    transition: transform 0.3s cubic-bezier(0.4, 2.5, 0.6, 1);
}

.watch-mode .watch-hand {
    display: block;
}

.hour-hand {
    width: 6px;
    height: 65px;
    transform: translate(-50%, -100%) rotate(0deg);
}

.second-hand {
    width: 2px;
    height: 90px;
    background-color: rgba(255, 75, 75, 0.8);
    box-shadow: 0 0 10px rgba(255, 75, 75, 0.6);
    transform: translate(-50%, -100%) rotate(0deg);
}

/* ==========================================
   FILTER AND BUTTON STYLES
   ========================================== */

.button-controls {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    margin-top: -125px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    z-index: 100;
}

.filter-buttons,
.action-buttons {
    display: flex;
    justify-content: center;
    gap: 8px;
    flex-wrap: wrap;
}

.filter-btn,
.reset-btn,
#resetBtn {
    background: rgba(255, 255, 255, 0.05) !important;
    backdrop-filter: blur(10px) !important;
    border: 1px solid rgba(255, 255, 255, 0.1) !important;
    color: rgba(160, 196, 228, 0.7) !important;
    padding: 8px 14px !important;
    border-radius: 10px !important;
    font-size: 9px !important;
    letter-spacing: 1px !important;
    cursor: pointer !important;
    transition: all 0.3s ease !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
    outline: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
}

.filter-btn:hover,
.reset-btn:hover,
#resetBtn:hover {
    background: rgba(255, 255, 255, 0.1) !important;
    color: rgba(255, 255, 255, 0.9) !important;
    border-color: rgba(255, 255, 255, 0.2) !important;
}

.filter-btn.active {
    background: rgba(0, 212, 255, 0.2) !important;
    color: #00d4ff !important;
    border-color: rgba(0, 212, 255, 0.4) !important;
    box-shadow: 0 0 15px rgba(0, 212, 255, 0.3) !important;
}

.reset-btn:active,
#resetBtn:active {
    transform: scale(0.95) !important;
}

/* Subtle pulse effect for Data Science Suite button */
#newSiteBtn {
    position: relative;
    animation: buttonPulse 3s ease-in-out infinite;
}

@keyframes buttonPulse {
    0%, 100% {
        box-shadow: 0 0 0 rgba(0, 255, 136, 0);
    }
    50% {
        box-shadow: 0 0 20px rgba(0, 255, 136, 0.4);
    }
}

/* ==========================================
   GRAYSCALE / BW MODE
   ========================================== */

/* Apply grayscale to individual segments when in bw-mode */
.page-container.bw-mode .carousel-segment {
    filter: grayscale(100%);
}

/* Remove grayscale from colorized segments */
.page-container.bw-mode .carousel-segment.colorize {
    filter: grayscale(0%);
}

/* Also apply grayscale to other elements in bw-mode */
.page-container.bw-mode .center-core,
.page-container.bw-mode .carousel-ring,
.page-container.bw-mode .orbit-dot,
.page-container.bw-mode .flow-line,
.page-container.bw-mode .bg-grid {
    filter: grayscale(100%);
}

/* ==========================================
   MOBILE RESPONSIVE
   ========================================== */

@media screen and (max-width: 768px) {
    .button-controls {
        margin-top: -130px;
        gap: 8px;
        width: 90%;
        max-width: 320px;
    }
    
    .filter-buttons,
    .action-buttons {
        gap: 6px;
        width: 100%;
    }
    
    .filter-btn,
    .reset-btn,
    #resetBtn {
        font-size: 8px !important;
        padding: 6px 12px !important;
    }
    
    .carousel-container {
        width: 300px;
        height: 300px;
        margin-top: 5vh;
    }
    
    .carousel-segment {
        width: 65px;
        height: 65px;
    }
    
    .segment-title {
        font-size: 8px;
        top: 6px;
    }
    
    .center-core {
        width: 150px;
        height: 150px;
    }
    
    .core-value {
        font-size: 22px;
    }
    
    .attribution {
        bottom: 30px;
        font-size: 9px;
        padding: 10px 18px;
    }
}

/* ==========================================
   ATOM ANIMATION (Data Science)
   ========================================== */

.atom-viz {
    width: 60px;
    height: 60px;
    position: relative;
    margin-top: 5px;
}

.nucleus {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 12px;
    height: 12px;
    background: radial-gradient(circle, #00ff88, #00d4ff);
    border-radius: 50%;
    box-shadow: 0 0 15px rgba(0, 255, 136, 0.8);
    animation: nucleusPulse 2s ease-in-out infinite;
}

@keyframes nucleusPulse {
    0%, 100% { 
        transform: translate(-50%, -50%) scale(1);
        box-shadow: 0 0 15px rgba(0, 255, 136, 0.8);
    }
    50% { 
        transform: translate(-50%, -50%) scale(1.2);
        box-shadow: 0 0 25px rgba(0, 255, 136, 1);
    }
}

.orbit {
    position: absolute;
    top: 50%;
    left: 50%;
    border: 1px solid rgba(0, 212, 255, 0.3);
    border-radius: 50%;
    transform: translate(-50%, -50%);
}

.orbit1 {
    width: 40px;
    height: 40px;
    animation: orbit1Rotate 3s linear infinite;
}

.orbit2 {
    width: 55px;
    height: 55px;
    animation: orbit2Rotate 4s linear infinite;
    transform: translate(-50%, -50%) rotateX(60deg);
}

.orbit3 {
    width: 50px;
    height: 50px;
    animation: orbit3Rotate 3.5s linear infinite reverse;
    transform: translate(-50%, -50%) rotateY(60deg);
}

@keyframes orbit1Rotate {
    from { transform: translate(-50%, -50%) rotate(0deg); }
    to { transform: translate(-50%, -50%) rotate(360deg); }
}

@keyframes orbit2Rotate {
    from { transform: translate(-50%, -50%) rotateX(60deg) rotate(0deg); }
    to { transform: translate(-50%, -50%) rotateX(60deg) rotate(360deg); }
}

@keyframes orbit3Rotate {
    from { transform: translate(-50%, -50%) rotateY(60deg) rotate(0deg); }
    to { transform: translate(-50%, -50%) rotateY(60deg) rotate(360deg); }
}

/* Atom satellite animations */
@keyframes atomOrbit1 {
    from { transform: translate(-50%, -50%) rotate(0deg); }
    to { transform: translate(-50%, -50%) rotate(360deg); }
}

@keyframes atomOrbit2 {
    from { transform: translate(-50%, -50%) rotateX(70deg) rotate(0deg); }
    to { transform: translate(-50%, -50%) rotateX(70deg) rotate(360deg); }
}

@keyframes atomElectron1 {
    0% { top: 2px; left: 50%; }
    25% { top: 50%; left: 13px; }
    50% { top: 13px; left: 50%; }
    75% { top: 50%; left: 2px; }
    100% { top: 2px; left: 50%; }
}

@keyframes atomElectron2 {
    0% { top: 50%; left: 13px; }
    25% { top: 13px; left: 50%; }
    50% { top: 50%; left: 2px; }
    75% { top: 2px; left: 50%; }
    100% { top: 50%; left: 13px; }
}

.carousel-segment.data-science .viz-clipper {
    transform: translateY(15%);
}