/* Legacy loader (equalizer bars + bouncing ball) — exact port of the
   runtime-injected component styles from ideasfor.events, same capture
   method as concept-gallery.css / concept-lightbox.css. Two contexts on the
   legacy site: .load-splash (dark fullscreen overlay, white loader) and
   .loading-element (in-content, purple loader). The streaming-render pages
   show the .loading-element variant while their data loads.
   (The bounce* keyframes the page also carries are animate.css and were
   already ported; only the loader's own keyframes live here.) */

.load-splash {
    position: fixed;
    z-index: 120;
    height: 100vh;
    width: 100%;
    left: 0;
    top: 0;
    background: rgba(0, 0, 0, 0.5);
    align-items: center;
    text-align: center;
    justify-content: center;
    display: none;
}

.load-splash.visible {
    display: flex;
}

.loading-element .loader {
    margin: 0 auto;
}

.loading-element .loader .loader-ball,
.loading-element .loader .loader-bar {
    background: #9c27b0;
}

.loader {
    position: relative;
    width: 75px;
    height: 100px;
}

.loader .loader-bar {
    position: absolute;
    bottom: 0;
    width: 10px;
    height: 50%;
    background: #fff;
    transform-origin: center bottom;
    box-shadow: 0 10px 20px -12px rgba(0, 0, 0, 0.2), 0 3px 20px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.42);
}

.loader-bar:nth-child(1) { left: 0;    transform: scale(1, 0.2); animation: loaderBar1Keyframe 4s ease infinite; }
.loader-bar:nth-child(2) { left: 15px; transform: scale(1, 0.4); animation: loaderBar2Keyframe 4s ease infinite; }
.loader-bar:nth-child(3) { left: 30px; transform: scale(1, 0.6); animation: loaderBar3Keyframe 4s ease infinite; }
.loader-bar:nth-child(4) { left: 45px; transform: scale(1, 0.8); animation: loaderBar4Keyframe 4s ease infinite; }
.loader-bar:nth-child(5) { left: 60px; transform: scale(1, 1);   animation: loaderBar5Keyframe 4s ease infinite; }

.loader .loader-ball {
    position: absolute;
    bottom: 10px;
    left: 0;
    width: 10px;
    height: 10px;
    background: #fff;
    border-radius: 50%;
    animation: loaderBallKeyframe 4s ease infinite;
    box-shadow: 0 10px 20px -12px rgba(0, 0, 0, 0.42), 0 3px 20px 0 rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2);
}

@keyframes loaderBallKeyframe {
    0%, 100% { transform: translate(0, 0); }
    5%   { transform: translate(8px, -14px); }
    10%  { transform: translate(15px, -10px); }
    17%  { transform: translate(23px, -24px); }
    20%, 70% { transform: translate(30px, -20px); }
    27%  { transform: translate(38px, -34px); }
    30%  { transform: translate(45px, -30px); }
    37%  { transform: translate(53px, -44px); }
    40%  { transform: translate(60px, -40px); }
    50%  { transform: translate(60px, 0); }
    57%  { transform: translate(53px, -14px); }
    60%  { transform: translate(45px, -10px); }
    67%  { transform: translate(37px, -24px); }
    77%  { transform: translate(22px, -34px); }
    80%  { transform: translate(15px, -30px); }
    87%  { transform: translate(7px, -44px); }
    90%  { transform: translate(0, -40px); }
}

@keyframes loaderBar1Keyframe {
    0%, 100%, 40% { transform: scale(1, 0.2); }
    50%, 90% { transform: scale(1, 1); }
}

@keyframes loaderBar2Keyframe {
    0%, 100%, 40% { transform: scale(1, 0.4); }
    50%, 90% { transform: scale(1, 0.8); }
}

@keyframes loaderBar3Keyframe {
    0%, 100% { transform: scale(1, 0.6); }
}

@keyframes loaderBar4Keyframe {
    0%, 100%, 40% { transform: scale(1, 0.8); }
    50%, 90% { transform: scale(1, 0.4); }
}

@keyframes loaderBar5Keyframe {
    0%, 100%, 40% { transform: scale(1, 1); }
    50%, 90% { transform: scale(1, 0.2); }
}

/* Container for the streaming-render loading state: centers the legacy
   loader in the content area with enough height that the footer does not
   jump when data streams in. Local addition — legacy's Angular equivalents
   position theirs via component layout. */
.pp-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 320px;
}
