/* Data Pipeline Architecture explorer styles (moved out of the inline style block; keyframes prefixed with dp-). */
.dp-wrapper { width: 100%; overflow: hidden; display: flex; align-items: center; justify-content: center; padding: 1rem; background: #f5f5f5; font-family: 'Outfit', sans-serif; box-sizing: border-box; }
.dp-card { width: 100%; max-width: 1024px; border-radius: 1rem; background: linear-gradient(135deg, #0f0f1a 0%, #1a1a2e 50%, #16213e 100%); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15); overflow: hidden; margin: 0 auto; }
.dp-inner { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 3rem; }
.dp-title { font-family: 'Outfit', sans-serif; font-size: 1.875rem; font-weight: 700; color: #ffffff; margin: 0 0 4rem 0; text-align: center; letter-spacing: 0.025em; }
.dp-scroll-container { width: 100%; overflow-x: hidden; padding-bottom: 1rem; }
.dp-relative { position: relative; width: 100%; min-width: 100%; display: flex; justify-content: center;}
.dp-line-svg { position: absolute; top: 4rem; left: 50%; transform: translateX(-50%); width: 100%; max-width: 840px; height: 1rem; z-index: 0; }
.dp-nodes-container { position: relative; z-index: 10; display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; padding: 1rem 0.5rem 0 0.5rem; width: 100%; max-width: 900px; }
.dp-node { display: flex; flex-direction: column; align-items: center; width: 8rem; cursor: pointer; }
.dp-node-circle { width: 6rem; height: 6rem; border-radius: 9999px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: linear-gradient(145deg, #8b00fd, #5c00a8); box-shadow: 0 8px 32px rgba(139, 0, 253, 0.4); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
.dp-node-circle:hover { transform: scale(1.15); filter: drop-shadow(0 0 20px rgba(139, 0, 253, 0.6)); }
.dp-node-circle:active { transform: scale(1.05); }
.dp-icon-lg { width: 3rem; height: 3rem; color: #ffffff; }
.dp-node-label { font-family: 'Outfit', sans-serif; margin-top: 1rem; color: #ffffff; text-align: center; font-size: 0.875rem; font-weight: 500; line-height: 1.25; transition: color 0.3s ease; }
.dp-node:hover .dp-node-label { color: #8b00fd; }
.dp-footer-text { font-family: 'Outfit', sans-serif; margin-top: 4rem; color: #9ca3af; font-size: 0.875rem; text-align: center; }
.dp-hidden { display: none !important; }
.dp-overlay { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 50; background: rgba(0, 0, 0, 0.7); backdrop-filter: blur(4px); animation: dp-fadeIn 0.3s ease-out; }
.dp-popup { font-family: 'Outfit', sans-serif; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 91.666%; max-width: 32rem; border-radius: 1rem; padding: 2rem; background: linear-gradient(145deg, #1a1a2e, #16213e); border: 2px solid #8b00fd; box-shadow: 0 25px 50px rgba(139, 0, 253, 0.3); animation: dp-slideUp 0.3s ease-out; box-sizing: border-box; }
.dp-close-btn { position: absolute; top: 1rem; right: 1rem; width: 2.5rem; height: 2.5rem; border-radius: 9999px; display: flex; align-items: center; justify-content: center; background: rgba(139, 0, 253, 0.2); border: 1px solid #8b00fd; cursor: pointer; transition: all 0.3s; color: #8b00fd; padding: 0; }
.dp-close-btn:hover { transform: rotate(90deg); }
.dp-close-icon { width: 1.5rem; height: 1.5rem; }
.dp-popup-header { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; }
.dp-popup-icon-wrap { width: 3.5rem; height: 3.5rem; border-radius: 9999px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: linear-gradient(145deg, #8b00fd, #5c00a8); }
.dp-popup-title { font-family: 'Outfit', sans-serif; font-size: 1.5rem; font-weight: 700; color: #ffffff; padding-right: 2rem; margin: 0; }
.dp-popup-desc { font-family: 'Outfit', sans-serif; color: #d1d5db; line-height: 1.625; font-size: 1rem; margin: 0; }
.dp-popup-footer { margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid rgba(139, 0, 253, 0.3); }
.dp-popup-btn { font-family: 'Outfit', sans-serif; width: 100%; padding: 0.75rem 0; border-radius: 0.5rem; font-weight: 600; color: #ffffff; background: linear-gradient(145deg, #8b00fd, #5c00a8); border: none; cursor: pointer; transition: all 0.3s; font-size: 1rem; }
.dp-popup-btn:hover { opacity: 0.9; }
@keyframes dp-fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes dp-slideUp { from { opacity: 0; transform: translate(-50%, -45%); } to { opacity: 1; transform: translate(-50%, -50%); } }
.connecting-line { stroke-dasharray: 1000; animation: dp-drawLine 2s ease-out forwards; }
@keyframes dp-drawLine { from { stroke-dashoffset: 1000; } to { stroke-dashoffset: 0; } }
@media (max-width: 900px) { .dp-inner { padding: 2rem 1rem; } .dp-scroll-container { overflow-x: auto; } .dp-relative { min-width: 800px; justify-content: flex-start;} .dp-line-svg { left: 0; transform: none; width: 100%; max-width: none;} }
.dp-node:focus-visible { outline: none; }
.dp-node:focus-visible .dp-node-circle { outline: 3px solid #ffffff; outline-offset: 4px; }
