/* ====================================================================
   Snapchat-Style View Once Media Overlay Styles
   ==================================================================== */

/* Classy view once chat container bubble */
.view_once_media {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    background: rgba(18, 18, 24, 0.75);
    border: 1px dashed rgba(255, 255, 255, 0.2);
    border-radius: 12px;
    color: #ff4757;
    cursor: pointer;
    font-weight: 600;
    font-size: 13px;
    transition: all 0.3s ease;
    user-select: none;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
}

.view_once_media i {
    font-size: 15px;
    animation: eye-bounce 2s infinite;
}

@keyframes eye-bounce {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-2px); }
}

.view_once_media:hover {
    background: rgba(255, 71, 87, 0.1);
    border-color: #ff4757;
    box-shadow: 0 4px 15px rgba(255, 71, 87, 0.25);
    transform: translateY(-2px);
}

/* Already opened state */
.view_once_media.opened {
    background: rgba(45, 52, 54, 0.4) !important;
    border: 1px solid rgba(255, 255, 255, 0.05) !important;
    color: rgba(255, 255, 255, 0.4) !important;
    cursor: not-allowed !important;
    box-shadow: none !important;
    transform: none !important;
}

.view_once_media.opened i {
    animation: none !important;
}

/* Sender's own View Once media — non-clickable, muted blue */
.view_once_media.sent_view_once {
    background: rgba(30, 40, 80, 0.5) !important;
    border: 1px solid rgba(100, 140, 255, 0.2) !important;
    color: rgba(130, 165, 255, 0.7) !important;
    cursor: default !important;
    box-shadow: none !important;
    transform: none !important;
}

.view_once_media.sent_view_once i {
    animation: none !important;
}

/* Secure View Once Fullscreen Overlay */
.secure_view_once_overlay {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    width: 100%; height: 100%;
    background: #000000;
    z-index: 999999;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(15px);
    transition: opacity 0.3s ease;
    user-select: none;
    -webkit-user-select: none;
}

.secure_view_once_container {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
}

/* Canvas & Video styles */
#secure_view_once_canvas,
#secure_view_once_video {
    max-width: 90vw !important;
    max-height: 80vh !important;
    object-fit: contain !important;
    box-shadow: 0 15px 50px rgba(0,0,0,0.9);
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, 0.1);
    transition: filter 0.25s ease;
    pointer-events: none; /* Block click/drag */
}

/* Screenshot alert blur effect */
.secure_blurred {
    filter: blur(80px) !important;
}

/* Close button */
.secure_view_once_close {
    position: absolute;
    top: 25px;
    right: 25px;
    width: 44px;
    height: 44px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 20px;
    cursor: pointer;
    transition: all 0.3s ease;
    border: 1px solid rgba(255, 255, 255, 0.08);
}
.secure_view_once_close:hover {
    background: #ff4757;
    box-shadow: 0 0 15px rgba(255, 71, 87, 0.4);
    transform: rotate(90deg);
}

/* Timer Container */
.secure_timer_container {
    position: absolute;
    top: 25px;
    left: 25px;
    width: 46px;
    height: 46px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.secure_timer_svg {
    transform: rotate(-90deg);
    width: 100%;
    height: 100%;
}

.secure_timer_bg {
    fill: none;
    stroke: rgba(255, 255, 255, 0.1);
    stroke-width: 3;
}

.secure_timer_progress {
    fill: none;
    stroke: #ff4757;
    stroke-width: 3;
    stroke-linecap: round;
    transition: stroke-dasharray 0.1s linear;
}

.secure_timer_text {
    position: absolute;
    color: #fff;
    font-size: 14px;
    font-weight: 800;
}

/* Bottom Warning Banner */
.secure_warning_banner {
    position: absolute;
    bottom: 30px;
    display: flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 71, 87, 0.12);
    border: 1px solid rgba(255, 71, 87, 0.3);
    padding: 8px 18px;
    border-radius: 20px;
    color: #ff4757;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.35);
}

.secure_warning_banner i {
    font-size: 13px;
}


/* ====================================================================
   WhatsApp-Style Media Upload Preview Modal Styles
   ==================================================================== */

.wa_preview_overlay {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    width: 100%; height: 100%;
    background: rgba(10, 10, 12, 0.92);
    backdrop-filter: blur(15px);
    -webkit-backdrop-filter: blur(15px);
    z-index: 999999;
    display: flex;
    align-items: center;
    justify-content: center;
}

.wa_preview_container {
    width: 100%;
    max-width: 600px;
    height: 90%;
    max-height: 800px;
    background: #121216;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 20px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    position: relative;
}

/* Header toolbar styling */
.wa_preview_header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 24px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    background: rgba(18, 18, 22, 0.5);
}

.wa_preview_title {
    color: #ffffff;
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0.5px;
}

.wa_preview_tools {
    display: flex;
    align-items: center;
    gap: 12px;
}

.wa_preview_tools button {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.08);
    color: #ffffff;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    cursor: pointer;
    transition: all 0.3s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    outline: none;
}

.wa_preview_tools button:hover {
    background: rgba(255, 255, 255, 0.15);
    border-color: rgba(255, 255, 255, 0.2);
    transform: scale(1.05);
}

.wa_preview_tools button.wa_close_btn:hover {
    background: #ff4757;
    border-color: #ff4757;
}

/* Body container holding Cropper or Video */
.wa_preview_body {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #09090b;
    position: relative;
    overflow: hidden;
    padding: 20px;
}

#wa_image_wrapper {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}

#wa_preview_img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    border-radius: 8px;
}

#wa_preview_video {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    border-radius: 8px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.5);
    outline: none;
}

/* Bottom Bar styling */
.wa_preview_footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 24px;
    border-top: 1px solid rgba(255, 255, 255, 0.06);
    background: rgba(18, 18, 22, 0.8);
}

/* WhatsApp-style View Once toggle styling */
.wa_view_once_wrapper {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    padding: 6px 12px;
    border-radius: 20px;
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid rgba(255, 255, 255, 0.04);
    transition: all 0.3s ease;
    user-select: none;
}

.wa_view_once_wrapper:hover {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.1);
}

.wa_view_once_circle {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    border: 2px dashed rgba(255, 255, 255, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.wa_view_once_circle span {
    font-size: 12px;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.8);
    position: relative;
    top: -0.5px;
}

.wa_view_once_wrapper:hover .wa_view_once_circle {
    border-color: #ffffff;
}

/* Circular button active style matching WhatsApp UI */
.wa_view_once_circle.active {
    background: rgba(37, 211, 102, 0.15);
    border: 2px solid #25d366;
    transform: scale(1.1);
}

.wa_view_once_circle.active span {
    color: #25d366;
}

#wa_view_once_label {
    color: rgba(255, 255, 255, 0.7);
    font-size: 13px;
    font-weight: 600;
}

.wa_view_once_circle.active + #wa_view_once_label {
    color: #25d366;
}

/* Green Circular Send Button */
.wa_send_btn {
    background: #00a884;
    border: none;
    color: #ffffff;
    width: 50px;
    height: 50px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    box-shadow: 0 4px 15px rgba(0, 168, 132, 0.3);
    outline: none;
}

.wa_send_btn:hover {
    background: #00bfa5;
    transform: scale(1.08) rotate(-10deg);
    box-shadow: 0 6px 20px rgba(0, 168, 132, 0.45);
}

.wa_send_btn i {
    position: relative;
    left: -1px;
}

/* Cropper UI style tweaks to look neat in dark mode */
.cropper-view-box {
    outline: 2px solid #00a884;
    outline-color: #00a884;
}

.cropper-line {
    background-color: #00a884;
}

.cropper-point {
    background-color: #00a884;
    width: 8px;
    height: 8px;
}

.cropper-point.point-se {
    width: 12px;
    height: 12px;
    border-radius: 50%;
}

/* ====================================================================
   Timer / Unlimited Mode Toggle Row (inside WA Preview Footer)
   ==================================================================== */

.wa_mode_row {
    display: flex;
    align-items: center;
    gap: 8px;
    animation: fadeSlideUp 0.25s ease;
}

@keyframes fadeSlideUp {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}

.wa_mode_btn {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 6px 14px;
    border-radius: 20px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    background: rgba(255, 255, 255, 0.05);
    color: rgba(255, 255, 255, 0.6);
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.25s ease;
    outline: none;
}

.wa_mode_btn:hover {
    border-color: rgba(255, 255, 255, 0.25);
    color: #fff;
    background: rgba(255, 255, 255, 0.1);
}

.wa_mode_btn.active {
    background: rgba(37, 211, 102, 0.12);
    border-color: #25d366;
    color: #25d366;
}

.wa_mode_btn i {
    font-size: 11px;
}

/* ====================================================================
   Unlimited Mode — Big Centered Close Button in Secure Viewer
   ==================================================================== */

.secure_unlimited_close_btn {
    position: absolute;
    bottom: 80px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 32px;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: 40px;
    color: #ffffff;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.3s ease;
    letter-spacing: 0.5px;
    backdrop-filter: blur(10px);
}

.secure_unlimited_close_btn i {
    font-size: 20px;
}

.secure_unlimited_close_btn:hover {
    background: rgba(255, 71, 87, 0.18);
    border-color: #ff4757;
    color: #ff4757;
    transform: translateX(-50%) scale(1.04);
    box-shadow: 0 8px 25px rgba(255, 71, 87, 0.25);
}

/* ====================================================================
   PERMANENT FIX: Pin header + chat body to viewport.
   Root cause of scroll bug: #chat_head was not fixed, so on scroll
   it drifted up, making #global_chat shift and exposing a gap.
   Solution: Fix header at top:0, fix body at top:50px..bottom:0.
   Do NOT touch #top_chat_container — JS adjustHeight() handles it.
   ==================================================================== */
html, body {
    height: 100% !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
}

/* Header permanently locked to top — never scrolls away */
#chat_head {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: 50px !important;
    z-index: 9000 !important;
}

/* All modals MUST render above the fixed header — profile/card/etc */
.small_modal_out,
.large_modal_out,
.over_modal_out,
.over_emodal_out,
.top_modal_out {
    z-index: 10000 !important;
}

/* Main chat body pinned from below header to bottom of screen */
#global_chat {
    position: fixed !important;
    top: 50px !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    height: auto !important;
    overflow: hidden !important;
}

/* These must fill their parent's fixed height */
#container_chat,
#wrap_chat {
    height: 100% !important;
    overflow: hidden !important;
}

/* Mobile private chat panel positioning inside #global_chat */
.ppanel2 {
    top: 0 !important;
}

/* Message log scroll stays internal — JS sets explicit height */
#warp_show_chat {
    overflow: hidden !important;
}


/* ====================================================================
   Premium Announcement News Ticker Styles
   ==================================================================== */

.chat_ticker_wrapper {
    width: 100%;
    height: 38px;
    position: relative;
    overflow: hidden;
    box-sizing: border-box;
}

.chat_ticker_container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    background: rgba(18, 18, 24, 0.85);
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    overflow: hidden;
    z-index: 10;
    font-family: 'Outfit', 'Inter', sans-serif;
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    box-sizing: border-box;
}

.ticker_title {
    background: linear-gradient(135deg, #ff4757, #ff6b81);
    color: #fff;
    width: 44px;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 4px 0 15px rgba(255, 71, 87, 0.3);
    z-index: 2;
    white-space: nowrap;
}

.ticker_title i {
    font-size: 14px;
    animation: ticker-icon-glow 1.5s infinite;
}

@keyframes ticker-icon-glow {
    0%, 100% { opacity: 0.8; transform: scale(1); }
    50% { opacity: 1; transform: scale(1.15); }
}

.ticker_wrap {
    flex: 1;
    overflow: hidden;
    display: flex;
    align-items: center;
    height: 100%;
    z-index: 1;
}

.ticker_scroll {
    display: inline-block;
    white-space: nowrap;
    animation: ticker-slide 32s linear infinite;
    will-change: transform;
}

.ticker_scroll:hover {
    animation-play-state: paused;
    cursor: pointer;
}

.ticker_item {
    display: inline-block;
    color: rgba(255, 255, 255, 0.85);
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.3px;
    transition: color 0.2s ease;
}

.ticker_item:hover {
    color: #ff6b81;
}

@keyframes ticker-slide {
    0% {
        transform: translate3d(100%, 0, 0);
    }
    100% {
        transform: translate3d(-100%, 0, 0);
    }
}

/* ====================================================================
   Message Reactions Detail Modal Styles
   ==================================================================== */
.msg_react_modal {
    padding: 5px;
    border-radius: 12px;
}
.msg_react_modal .modal_header h3 {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
    color: #fff;
    text-align: center;
    padding-bottom: 12px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.react_tabs_list {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
    padding: 10px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    margin-bottom: 15px !important;
}
.react_tabs_list::-webkit-scrollbar {
    display: none;
}
.react_tabs_list .modal_menu_item {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 6px 12px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 20px;
    cursor: pointer;
    transition: all 0.2s ease;
    white-space: nowrap;
    list-style: none;
    font-size: 13px;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.7);
}
.react_tabs_list .modal_menu_item:hover {
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
}
.react_tabs_list .modal_menu_item.modal_selected {
    background: rgba(226, 78, 3, 0.15) !important;
    border-color: rgba(226, 78, 3, 0.4) !important;
    color: #e24e03 !important;
    box-shadow: 0 2px 10px rgba(226, 78, 3, 0.1);
}
.react_tab_count {
    font-size: 11px;
    background: rgba(255, 255, 255, 0.08);
    color: rgba(255, 255, 255, 0.6);
    padding: 1px 6px;
    border-radius: 10px;
    font-weight: 600;
}
.react_tabs_list .modal_menu_item.modal_selected .react_tab_count {
    background: rgba(226, 78, 3, 0.25);
    color: #e24e03;
}
.react_users_list {
    display: flex;
    flex-direction: column;
    gap: 8px;
    overflow-y: auto;
    max-height: 380px;
    padding-right: 4px;
}
.react_user_row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 12px;
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid rgba(255, 255, 255, 0.04);
    border-radius: 10px;
    cursor: pointer;
    transition: all 0.2s ease;
}
.react_user_row:hover {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.08);
    transform: translateY(-1px);
}
.react_user_av {
    position: relative;
    width: 38px;
    height: 38px;
}
.react_user_av img {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    border: 1.5px solid rgba(255, 255, 255, 0.1);
}
.react_user_emoji_badge {
    position: absolute;
    bottom: -3px;
    right: -3px;
    background: #1e1e24;
    border: 1.5px solid #2a2a35;
    border-radius: 50%;
    width: 18px;
    height: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.3);
}
.react_user_name {
    flex: 1;
    font-size: 14px;
    font-weight: 500;
}
.react_user_name p {
    margin: 0;
}

/* ====================================================================
   Message Draft Indicator Pill Styles
   ==================================================================== */
.draft_indicator_pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: rgba(226, 78, 3, 0.18);
    border: 1px solid rgba(226, 78, 3, 0.35);
    color: #ff9d6c;
    font-size: 11px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 12px;
    margin-bottom: 4px;
    animation: draftPulse 0.3s ease-out;
}
.draft_indicator_pill i {
    font-size: 10px;
}
.draft_clear_btn {
    cursor: pointer;
    font-size: 13px;
    line-height: 1;
    margin-left: 2px;
    color: rgba(255, 255, 255, 0.6);
    transition: color 0.2s;
}
.draft_clear_btn:hover {
    color: #fff;
}
@keyframes draftPulse {
    from { opacity: 0; transform: translateY(4px); }
    to { opacity: 1; transform: translateY(0); }
}

/* ====================================================================
   35 MASTERPIECE ANIMATED PROFILE CARD EFFECTS
   (100% Pure CSS Gradients & Keyframes - Safe in all browsers)
   ==================================================================== */

.profile_effect_overlay,
#preview_effect_layer {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 1;
    overflow: hidden;
    border-radius: inherit;
}

.profile_effect_overlay::before,
.profile_effect_overlay::after,
#preview_effect_layer::before,
#preview_effect_layer::after {
    pointer-events: none;
}

/* ==================================================================
   1. SUPERNOVA
   ================================================================== */
.effect_supernova {
    background:
        radial-gradient(ellipse at 50% 100%, #ff007f 0%, #ff4d00 25%, #00e5ff44 55%, transparent 75%),
        radial-gradient(ellipse at 20% 80%, #ff007f55, transparent 45%),
        radial-gradient(ellipse at 80% 85%, #00e5ff55, transparent 45%);
    animation: fx_novaPulse 3s ease-in-out infinite alternate;
}
.effect_supernova::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #fff 0 2px, transparent 3px),
        radial-gradient(circle, #ff007f 0 2.5px, transparent 4px),
        radial-gradient(circle, #00ffff 0 2px, transparent 3px),
        radial-gradient(circle, #ffe600 0 2px, transparent 3px);
    background-size: 40px 40px, 65px 65px, 90px 90px, 115px 115px;
    background-position: 5px 10px, 25px 35px, 50px 5px, 15px 55px;
    animation: fx_starMove 5s linear infinite;
}
.effect_supernova::after {
    content: "";
    position: absolute;
    inset: 0;
    background: conic-gradient(from 0deg at 50% 85%,
        transparent 0deg, #ff007f88 45deg, transparent 90deg,
        #00e5ff88 180deg, transparent 225deg, #ffe60088 300deg, transparent 360deg);
    animation: fx_novaSpin 10s linear infinite;
    filter: blur(3px);
}
@keyframes fx_novaPulse { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_starMove { to { background-position: 45px -90px, 70px -130px, -40px -180px, 60px -160px; } }
@keyframes fx_novaSpin { to { transform: rotate(360deg); } }

/* ==================================================================
   2. CYBERPUNK
   ================================================================== */
.effect_cyberpunk {
    background:
        radial-gradient(ellipse at 0% 100%, #00ffff 0%, #00ffff88 20%, transparent 50%),
        radial-gradient(ellipse at 100% 100%, #ff007f 0%, #ff007f88 20%, transparent 50%),
        linear-gradient(180deg, transparent 40%, #00ffff18 100%);
    box-shadow: inset 0 0 30px #00ffff44, inset 0 -20px 40px #ff007f44;
}
.effect_cyberpunk::before {
    content: "";
    position: absolute;
    inset: 0;
    border: 2px solid #00ffff;
    border-radius: inherit;
    box-shadow: 0 0 20px #00ffff, inset 0 0 20px #ff007f55;
    animation: fx_cyberBorder 2s ease-in-out infinite alternate;
}
.effect_cyberpunk::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg,
        transparent 0%,
        #00ffff88 48%, #ff007f88 52%,
        transparent 100%);
    background-size: 100% 200%;
    background-position: 0 -100%;
    animation: fx_cyberScan 3s linear infinite;
}
@keyframes fx_cyberBorder {
    0% { border-color: #00ffff; box-shadow: 0 0 20px #00ffff, inset 0 0 15px #ff007f44; }
    100% { border-color: #ff007f; box-shadow: 0 0 20px #ff007f, inset 0 0 15px #00ffff44; }
}
@keyframes fx_cyberScan { to { background-position: 0 200%; } }

/* ==================================================================
   3. INFERNO BLAZE
   ================================================================== */
.effect_inferno_blaze {
    background:
        radial-gradient(ellipse at 50% 100%, #ff4500 0%, #ff8c00 30%, #ff000033 60%, transparent 80%),
        radial-gradient(ellipse at 25% 90%, #ff6b0088, transparent 40%),
        radial-gradient(ellipse at 75% 85%, #ff000088, transparent 40%);
    animation: fx_infernoBreath 2.5s ease-in-out infinite alternate;
}
.effect_inferno_blaze::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #fff7cc 0 2px, transparent 4px),
        radial-gradient(circle, #ff6b00 0 3px, transparent 5px),
        radial-gradient(circle, #ffb300 0 2.5px, transparent 4px);
    background-size: 30px 50px, 55px 80px, 80px 110px;
    background-position: 0 100px, 18px 150px, 40px 120px;
    animation: fx_emberFloat 4s linear infinite;
    filter: drop-shadow(0 0 6px #ff6b00);
}
.effect_inferno_blaze::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 30%, #ff450055 60%, #ff000088 100%);
    animation: fx_infernoGlow 1.8s ease-in-out infinite alternate;
}
@keyframes fx_infernoBreath { 0% { opacity: 0.85; } 100% { opacity: 1; } }
@keyframes fx_emberFloat { to { background-position: 15px -150px, -20px -200px, 55px -250px; } }
@keyframes fx_infernoGlow { 0% { opacity: 0.6; } 100% { opacity: 1; } }

/* ==================================================================
   4. VOID ABYSS
   ================================================================== */
.effect_void_abyss {
    background:
        radial-gradient(ellipse at 50% 100%, #a855f7 0%, #6366f1 35%, #a855f733 65%, transparent 85%),
        radial-gradient(ellipse at 30% 70%, #7c3aed88, transparent 45%);
    animation: fx_voidPulse 4s ease-in-out infinite alternate;
}
.effect_void_abyss::before {
    content: "";
    position: absolute;
    inset: 0;
    background: conic-gradient(from 0deg at 50% 80%,
        transparent 0deg, #a855f7 60deg, transparent 120deg,
        #6366f1 200deg, transparent 260deg, #a855f7 320deg, transparent 360deg);
    filter: blur(8px);
    animation: fx_voidSwirl 12s linear infinite;
}
.effect_void_abyss::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #e9d5ff 0 2px, transparent 4px),
        radial-gradient(circle, #a855f7 0 2.5px, transparent 4px);
    background-size: 50px 50px, 80px 80px;
    background-position: 10px 80px, 35px 120px;
    animation: fx_runeAscend 5s linear infinite;
}
@keyframes fx_voidPulse { 0% { opacity: 0.7; } 100% { opacity: 1; } }
@keyframes fx_voidSwirl { to { transform: rotate(360deg); } }
@keyframes fx_runeAscend { to { background-position: 25px -170px, 50px -220px; } }

/* ==================================================================
   5. THUNDERSTORM
   ================================================================== */
.effect_thunderstorm {
    background:
        radial-gradient(ellipse at 30% 90%, #00d2ff 0%, #00d2ff88 25%, transparent 55%),
        radial-gradient(ellipse at 75% 85%, #8b5cf6 0%, #8b5cf688 25%, transparent 55%),
        linear-gradient(180deg, transparent 30%, #1e3a4c55 100%);
    box-shadow: inset 0 -20px 40px #00d2ff44;
}
.effect_thunderstorm::before {
    content: "";
    position: absolute;
    inset: 0;
    border: 2px solid #00d2ff88;
    border-radius: inherit;
    box-shadow: 0 0 30px #00d2ff66, inset 0 0 25px #8b5cf644;
    animation: fx_plasmaArc 1.5s ease-in-out infinite alternate;
}
.effect_thunderstorm::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(115deg,
        transparent 42%, #e0f7ff 44%, transparent 46%,
        transparent 68%, #b0e8ff 70%, transparent 72%);
    animation: fx_lightning 3s steps(1) infinite;
}
@keyframes fx_plasmaArc {
    0% { border-color: #00d2ff88; box-shadow: 0 0 25px #00d2ff66, inset 0 0 20px #8b5cf633; }
    100% { border-color: #8b5cf6; box-shadow: 0 0 35px #8b5cf688, inset 0 0 30px #00d2ff44; }
}
@keyframes fx_lightning {
    0%, 70%, 78%, 100% { opacity: 0; }
    72%, 76% { opacity: 1; }
}

/* ==================================================================
   6. SAKURA BLOOM
   ================================================================== */
.effect_sakura_bloom {
    background:
        radial-gradient(ellipse at 50% 100%, #ffb7d0 0%, #ff96b4 25%, #ff96b433 60%, transparent 80%),
        radial-gradient(ellipse at 20% 80%, #ffc2d4aa, transparent 40%);
    box-shadow: inset 0 -20px 40px #ff96b466;
}
.effect_sakura_bloom::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #ffb7d0 0 3px, transparent 5px),
        radial-gradient(circle, #ff96b4 0 2.5px, transparent 4px),
        radial-gradient(circle, #ffc2d4 0 2px, transparent 3.5px),
        radial-gradient(circle, #fff 0 1.5px, transparent 3px);
    background-size: 45px 55px, 70px 80px, 95px 100px, 120px 110px;
    background-position: 5px 80px, 30px 120px, 55px 90px, 15px 140px;
    animation: fx_petalsRain 6s linear infinite;
    filter: drop-shadow(0 0 5px #ff96b4);
}
.effect_sakura_bloom::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse at 50% 70%, #ffc2d466, transparent 60%);
    animation: fx_sakuraPulse 3s ease-in-out infinite alternate;
}
@keyframes fx_petalsRain { to { background-position: 50px -150px, -30px -180px, 80px -210px, 40px -160px; } }
@keyframes fx_sakuraPulse { 0% { opacity: 0.5; } 100% { opacity: 1; } }

/* ==================================================================
   7. GOLD ROYALTY
   ================================================================== */
.effect_gold_royalty {
    background:
        radial-gradient(ellipse at 50% 100%, #ffd700 0%, #ffb300 30%, #ffd70044 60%, transparent 80%),
        radial-gradient(ellipse at 20% 85%, #ffa50088, transparent 40%),
        linear-gradient(180deg, transparent 20%, #b8860b44 100%);
    box-shadow: inset 0 -25px 50px #ffd70066;
    animation: fx_goldGlow 3s ease-in-out infinite alternate;
}
.effect_gold_royalty::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(70deg,
        transparent 0% 25%,
        #ffffff00 30%, #ffffffcc 50%, #ffffff00 70%,
        transparent 75% 100%);
    background-size: 200% 100%;
    background-position: -200% 0;
    animation: fx_goldSheen 3s ease-in-out infinite;
}
.effect_gold_royalty::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #fff 0 2px, transparent 4px),
        radial-gradient(circle, #ffd700 0 2.5px, transparent 4.5px),
        radial-gradient(circle, #fffacd 0 1.5px, transparent 3px);
    background-size: 60px 60px, 90px 90px, 45px 45px;
    background-position: 10px 30px, 40px 55px, 25px 10px;
    animation: fx_goldSparkle 4s ease-in-out infinite alternate;
}
@keyframes fx_goldGlow { 0% { opacity: 0.85; } 100% { opacity: 1; } }
@keyframes fx_goldSheen { 0% { background-position: -200% 0; } 50%, 100% { background-position: 200% 0; } }
@keyframes fx_goldSparkle { 0% { opacity: 0.5; } 100% { opacity: 1; } }

/* ==================================================================
   8. QUANTUM MATRIX
   ================================================================== */
.effect_quantum_matrix {
    background:
        linear-gradient(180deg, #00ff8022 0%, transparent 40%, #00ff8033 100%),
        repeating-linear-gradient(90deg,
            transparent 0px, transparent 11px,
            #00ff8022 11px, #00ff8022 12px,
            transparent 12px, transparent 24px);
    box-shadow: inset 0 0 40px #00ff8044;
}
.effect_quantum_matrix::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(180deg, #8cffbe 0px, #8cffbe 3px, transparent 3px, transparent 100%),
        linear-gradient(180deg, #00ff64 0px, #00ff64 3px, transparent 3px, transparent 100%),
        linear-gradient(180deg, #4dff91 0px, #4dff91 3px, transparent 3px, transparent 100%);
    background-size: 18px 90px, 28px 120px, 42px 75px;
    background-position: 0 0px, 10px -30px, 22px 15px;
    animation: fx_matrixDrop 2s linear infinite;
    filter: drop-shadow(0 0 6px #00ff80);
}
.effect_quantum_matrix::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 1px solid #00ff8044;
    border-radius: inherit;
    box-shadow: inset 0 0 30px #00ff8033;
    animation: fx_matrixBorder 2s ease-in-out infinite alternate;
}
@keyframes fx_matrixDrop { to { background-position: 0 90px, 10px 90px, 22px 90px; } }
@keyframes fx_matrixBorder { 0% { opacity: 0.4; } 100% { opacity: 1; } }

/* ==================================================================
   9. NEON SYNTHWAVE
   ================================================================== */
.effect_neon_synthwave {
    background:
        radial-gradient(ellipse at 50% 55%, #ff6400 0%, #ff007f 30%, #ff007f33 60%, transparent 80%),
        linear-gradient(180deg, transparent 15%, #2d004b44 100%);
    box-shadow: inset 0 -20px 50px #ff007f66;
}
.effect_neon_synthwave::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(#ff00bf44 1px, transparent 1px),
        linear-gradient(90deg, #00f0ff44 1px, transparent 1px);
    background-size: 30px 20px, 30px 20px;
    background-position: 0 60%;
    animation: fx_gridScroll 2s linear infinite;
    filter: drop-shadow(0 0 4px #ff00bf);
}
.effect_neon_synthwave::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg,
        #ff640088 0%, #ff007f88 30%, #a855f788 70%, transparent 100%);
    background-size: 100% 200%;
    background-position: 0 0;
    animation: fx_synthPulse 4s ease-in-out infinite alternate;
}
@keyframes fx_gridScroll { to { background-position: 0 calc(60% + 20px); } }
@keyframes fx_synthPulse { 0% { opacity: 0.5; background-position: 0 0; } 100% { opacity: 1; background-position: 0 100%; } }

/* ==================================================================
   10. ANGELIC HALO
   ================================================================== */
.effect_angelic_halo {
    background:
        radial-gradient(ellipse at 50% 15%, #ffffff 0%, #fffde7 20%, #ffffff33 50%, transparent 75%),
        radial-gradient(ellipse at 50% 100%, #ffe08244, transparent 60%);
    box-shadow: inset 0 20px 60px #ffffff55;
}
.effect_angelic_halo::before {
    content: "";
    position: absolute;
    inset: 0;
    background: conic-gradient(from 0deg at 50% 18%,
        transparent, #ffffff44, transparent 30%, #ffe08244, transparent 60%, #ffffff44, transparent);
    animation: fx_holyRays 8s linear infinite;
}
.effect_angelic_halo::after {
    content: "";
    position: absolute;
    left: 25%; right: 25%;
    top: 10%; height: 12%;
    border: 3px solid #fff;
    border-radius: 50%;
    box-shadow: 0 0 20px #fff, 0 0 40px #ffe082, inset 0 0 15px #ffe08266;
    animation: fx_haloFloat 2s ease-in-out infinite alternate;
}
@keyframes fx_holyRays { to { transform: rotate(360deg); } }
@keyframes fx_haloFloat { 0% { transform: translateY(0) scale(1); } 100% { transform: translateY(-6px) scale(1.05); } }

/* ==================================================================
   11. DEMON SLAYER
   ================================================================== */
.effect_demon_slayer {
    background:
        radial-gradient(ellipse at 50% 100%, #ff0028 0%, #b30020 30%, #ff002833 65%, transparent 85%),
        radial-gradient(ellipse at 20% 80%, #8b000088, transparent 40%);
    box-shadow: inset 0 -25px 55px #ff002866;
    animation: fx_demonFlicker 2s ease-in-out infinite alternate;
}
.effect_demon_slayer::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #ff4d4d 0 3px, transparent 5px),
        radial-gradient(circle, #ff0028 0 2.5px, transparent 4px),
        radial-gradient(circle, #ffaa00 0 2px, transparent 3.5px);
    background-size: 35px 50px, 60px 80px, 85px 60px;
    background-position: 5px 90px, 25px 130px, 50px 70px;
    animation: fx_demonEmber 3.5s linear infinite;
    filter: drop-shadow(0 0 8px #ff0028);
}
.effect_demon_slayer::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 2px solid #ff002888;
    border-radius: inherit;
    box-shadow: 0 0 30px #ff002855, inset 0 0 30px #8b000044;
    animation: fx_bloodBorder 1.5s ease-in-out infinite alternate;
}
@keyframes fx_demonFlicker { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_demonEmber { to { background-position: 20px -150px, -15px -190px, 70px -140px; } }
@keyframes fx_bloodBorder { 0% { opacity: 0.5; } 100% { opacity: 1; } }

/* ==================================================================
   12. FROZEN GLACIER
   ================================================================== */
.effect_frozen_glacier {
    background:
        radial-gradient(ellipse at 50% 100%, #b4f0ff 0%, #64c8ff 30%, #64c8ff33 65%, transparent 85%),
        radial-gradient(ellipse at 80% 70%, #a0e8ff55, transparent 45%);
    box-shadow: inset 0 -20px 45px #64c8ff55;
    animation: fx_glacierShimmer 4s ease-in-out infinite alternate;
}
.effect_frozen_glacier::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #ffffff 0 2px, transparent 4px),
        radial-gradient(circle, #a0e8ff 0 2.5px, transparent 4px),
        radial-gradient(circle, #e0f7ff 0 1.5px, transparent 3px);
    background-size: 40px 40px, 70px 70px, 55px 55px;
    background-position: 5px 60px, 25px 90px, 45px 30px;
    animation: fx_snowfall 5s linear infinite;
}
.effect_frozen_glacier::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg,
        transparent 0%, #ffffff22 30%, transparent 40%,
        transparent 60%, #b4f0ff33 80%, transparent 100%);
    animation: fx_iceSheen 6s ease-in-out infinite alternate;
}
@keyframes fx_glacierShimmer { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_snowfall { to { background-position: 45px -140px, -25px -170px, 70px -115px; } }
@keyframes fx_iceSheen { 0% { opacity: 0.3; transform: skewX(-5deg); } 100% { opacity: 0.7; transform: skewX(5deg); } }

/* ==================================================================
   13. HOLOGRAM TECH
   ================================================================== */
.effect_hologram_tech {
    background:
        radial-gradient(ellipse at 50% 60%, #00e5ff 0%, #00b4d8 25%, #00e5ff22 60%, transparent 80%),
        repeating-linear-gradient(0deg,
            transparent 0px, transparent 4px,
            #00e5ff0f 4px, #00e5ff0f 5px);
    box-shadow: inset 0 0 40px #00e5ff44;
}
.effect_hologram_tech::before {
    content: "";
    position: absolute;
    left: 50%; top: 50%;
    width: 120px; height: 120px;
    margin-left: -60px; margin-top: -20px;
    border: 2px dashed #00e5ff88;
    border-radius: 50%;
    box-shadow: 0 0 25px #00e5ff66, inset 0 0 25px #00e5ff44;
    animation: fx_hudSpin 8s linear infinite;
}
.effect_hologram_tech::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent, #00e5ff88 49%, #00ffff88 51%, transparent);
    background-size: 100% 200%;
    background-position: 0 -100%;
    animation: fx_hudScan 2s linear infinite;
}
@keyframes fx_hudSpin { to { transform: rotate(360deg); } }
@keyframes fx_hudScan { to { background-position: 0 200%; } }

/* ==================================================================
   14. TOXIC BIOHAZARD
   ================================================================== */
.effect_poison_slime {
    background:
        radial-gradient(ellipse at 50% 100%, #39ff14 0%, #7fff00 30%, #39ff1433 65%, transparent 85%),
        radial-gradient(ellipse at 25% 75%, #00800077, transparent 40%);
    box-shadow: inset 0 -20px 45px #39ff1466;
    animation: fx_toxicBubble 3s ease-in-out infinite alternate;
}
.effect_poison_slime::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #39ff14 0 3px, #39ff1488 8px, transparent 12px),
        radial-gradient(circle, #7fff00 0 2.5px, #7fff0066 7px, transparent 10px),
        radial-gradient(circle, #adff2f 0 2px, transparent 6px);
    background-size: 50px 60px, 80px 85px, 35px 45px;
    background-position: 10px 90px, 35px 130px, 60px 60px;
    animation: fx_slimeBubbles 5s linear infinite;
    filter: drop-shadow(0 0 6px #39ff14);
}
.effect_poison_slime::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 2px solid #39ff1466;
    border-radius: inherit;
    box-shadow: 0 0 25px #39ff1455, inset 0 0 25px #00800033;
    animation: fx_toxicGlow 2s ease-in-out infinite alternate;
}
@keyframes fx_toxicBubble { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_slimeBubbles { to { background-position: 15px -160px, -25px -205px, 80px -135px; } }
@keyframes fx_toxicGlow { 0% { opacity: 0.4; } 100% { opacity: 1; } }

/* ==================================================================
   15. MYSTIC GALAXY
   ================================================================== */
.effect_magic_galaxy {
    background:
        radial-gradient(ellipse at 35% 75%, #a855f7 0%, #7c3aed 25%, #a855f733 55%, transparent 75%),
        radial-gradient(ellipse at 75% 85%, #22d3ee 0%, #22d3ee44 30%, transparent 55%);
    box-shadow: inset 0 -20px 50px #a855f744;
}
.effect_magic_galaxy::before {
    content: "";
    position: absolute;
    inset: 0;
    background: conic-gradient(from 45deg at 50% 70%,
        transparent, #a855f766, transparent 25%, #22d3ee66, transparent 50%, #a855f766, transparent);
    filter: blur(6px);
    animation: fx_galaxySwirl 15s linear infinite;
}
.effect_magic_galaxy::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #fff 0 1.5px, transparent 3px),
        radial-gradient(circle, #67e8f9 0 2px, transparent 3.5px),
        radial-gradient(circle, #f0abfc 0 1.5px, transparent 2.5px);
    background-size: 50px 50px, 80px 80px, 65px 65px;
    background-position: 8px 20px, 30px 55px, 55px 10px;
    animation: fx_starTwinkle 3s ease-in-out infinite alternate;
}
@keyframes fx_galaxySwirl { to { transform: rotate(360deg); } }
@keyframes fx_starTwinkle { 0% { opacity: 0.4; } 100% { opacity: 1; } }

/* ==================================================================
   16. ENDLESS LOVE
   ================================================================== */
.effect_love_heartbeat {
    background:
        radial-gradient(ellipse at 50% 100%, #ff1493 0%, #ff69b4 30%, #ff149333 65%, transparent 85%),
        radial-gradient(ellipse at 75% 75%, #ff69b4aa, transparent 40%);
    box-shadow: inset 0 -20px 50px #ff149366;
    animation: fx_heartPulse 1s ease-in-out infinite alternate;
}
.effect_love_heartbeat::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #ff1493 0 4px, #ff149355 10px, transparent 14px),
        radial-gradient(circle, #ff69b4 0 3px, #ff69b455 8px, transparent 12px),
        radial-gradient(circle, #fff 0 2px, #ffffff55 5px, transparent 8px);
    background-size: 50px 60px, 80px 85px, 35px 45px;
    background-position: 8px 90px, 30px 130px, 55px 60px;
    animation: fx_heartsRise 5s linear infinite;
    filter: drop-shadow(0 0 8px #ff1493);
}
.effect_love_heartbeat::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse at 50% 85%, #ff149344, transparent 55%);
    animation: fx_loveGlow 2s ease-in-out infinite alternate;
}
@keyframes fx_heartPulse { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_heartsRise { to { background-position: 20px -160px, -10px -200px, 75px -135px; } }
@keyframes fx_loveGlow { 0% { opacity: 0.4; } 100% { opacity: 1; } }

/* ==================================================================
   17. ATLANTIS OCEAN
   ================================================================== */
.effect_ocean_depths {
    background:
        radial-gradient(ellipse at 50% 100%, #00c8ff 0%, #0080ff 30%, #00c8ff33 65%, transparent 85%),
        radial-gradient(ellipse at 25% 80%, #0064ff77, transparent 45%);
    box-shadow: inset 0 -25px 50px #00c8ff55;
    animation: fx_oceanWave 5s ease-in-out infinite alternate;
}
.effect_ocean_depths::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle at 35% 35%, #ffffff 0 1.5px, #8cf0ff44 8px, transparent 12px),
        radial-gradient(circle at 35% 35%, #ffffff 0 1.5px, #8cf0ff33 6px, transparent 10px);
    background-size: 65px 80px, 45px 55px;
    background-position: 5px 80px, 25px 110px;
    animation: fx_bubblesRise 6s linear infinite;
}
.effect_ocean_depths::after {
    content: "";
    position: absolute;
    inset: 0;
    background: repeating-radial-gradient(
        ellipse at 50% 60%,
        transparent 0px, transparent 18px,
        #8cf0ff22 20px, transparent 24px,
        transparent 40px);
    animation: fx_caustics 8s ease-in-out infinite alternate;
}
@keyframes fx_oceanWave { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_bubblesRise { to { background-position: 30px -200px, -15px -165px; } }
@keyframes fx_caustics { 0% { transform: scale(1); opacity: 0.5; } 100% { transform: scale(1.1); opacity: 1; } }

/* ==================================================================
   18. DISCO FEVER
   ================================================================== */
.effect_party_disco {
    background:
        radial-gradient(ellipse at 50% 80%, #fff 0%, #ffff0055 20%, transparent 50%),
        linear-gradient(180deg, transparent 20%, #1a003344 100%);
    animation: fx_discoColors 1.5s steps(1) infinite;
}
.effect_party_disco::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #ff007f 0 3px, #ff007f55 8px, transparent 12px),
        radial-gradient(circle, #00ffff 0 3px, #00ffff55 8px, transparent 12px),
        radial-gradient(circle, #ffe600 0 3px, #ffe60055 8px, transparent 12px),
        radial-gradient(circle, #a855f7 0 3px, #a855f755 8px, transparent 12px);
    background-size: 55px 55px, 85px 85px, 70px 70px, 100px 100px;
    background-position: 5px 30px, 30px 60px, 55px 10px, 15px 80px;
    animation: fx_confetti 3s linear infinite;
}
.effect_party_disco::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 3px solid transparent;
    border-radius: inherit;
    animation: fx_discoBorder 0.5s steps(1) infinite;
}
@keyframes fx_discoColors {
    0% { background-color: #ff007f22; }
    25% { background-color: #00ffff22; }
    50% { background-color: #ffe60022; }
    75% { background-color: #a855f722; }
}
@keyframes fx_confetti { to { background-position: 50px -165px, -30px -205px, 100px -140px, 60px -190px; } }
@keyframes fx_discoBorder {
    0% { border-color: #ff007f; box-shadow: 0 0 20px #ff007f; }
    25% { border-color: #00ffff; box-shadow: 0 0 20px #00ffff; }
    50% { border-color: #ffe600; box-shadow: 0 0 20px #ffe600; }
    75% { border-color: #a855f7; box-shadow: 0 0 20px #a855f7; }
}

/* ==================================================================
   19. PRISM DIAMOND
   ================================================================== */
.effect_diamond_sparkle {
    background:
        radial-gradient(ellipse at 30% 80%, #ffffff88, transparent 45%),
        radial-gradient(ellipse at 75% 70%, #c8e6ff66, transparent 45%),
        radial-gradient(ellipse at 50% 100%, #e0e7ff 0%, #c7d7ff 25%, #e0e7ff33 55%, transparent 75%);
    box-shadow: inset 0 0 40px #ffffff33;
    animation: fx_diamondGleam 4s ease-in-out infinite alternate;
}
.effect_diamond_sparkle::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(75deg,
        transparent 0% 30%,
        #ffffff00 35%, #ffffffee 50%, #ffffff00 65%,
        transparent 70% 100%);
    background-size: 200% 100%;
    background-position: -200% 0;
    animation: fx_prismSheen 3s ease-in-out infinite;
}
.effect_diamond_sparkle::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #fff 0 2.5px, #00ffff55 7px, transparent 10px),
        radial-gradient(circle, #ff00ff 0 2px, #ff00ff55 6px, transparent 9px),
        radial-gradient(circle, #ffd700 0 2px, #ffd70055 5px, transparent 8px);
    background-size: 55px 55px, 80px 80px, 45px 45px;
    background-position: 8px 30px, 35px 65px, 60px 15px;
    animation: fx_diamondSpark 2s ease-in-out infinite alternate;
}
@keyframes fx_diamondGleam { 0% { opacity: 0.7; } 100% { opacity: 1; } }
@keyframes fx_prismSheen { 0% { background-position: -200% 0; } 60%, 100% { background-position: 200% 0; } }
@keyframes fx_diamondSpark { 0% { opacity: 0.4; } 100% { opacity: 1; } }

/* ==================================================================
   20. PHANTOM GHOST
   ================================================================== */
.effect_phantom_ghost {
    background:
        radial-gradient(ellipse at 50% 100%, #2dd4bf 0%, #0d9488 30%, #2dd4bf33 65%, transparent 85%),
        radial-gradient(ellipse at 75% 60%, #99f6e455, transparent 45%);
    box-shadow: inset 0 -20px 50px #2dd4bf44;
    animation: fx_ghostDrift 6s ease-in-out infinite alternate;
}
.effect_phantom_ghost::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #2dd4bf 0 3px, #2dd4bf55 10px, transparent 15px),
        radial-gradient(circle, #99f6e4 0 2.5px, #99f6e455 8px, transparent 12px),
        radial-gradient(circle, #fff 0 1.5px, #ffffff44 5px, transparent 8px);
    background-size: 60px 70px, 90px 95px, 45px 50px;
    background-position: 10px 80px, 30px 120px, 55px 50px;
    animation: fx_ghostOrbs 7s ease-in-out infinite;
    filter: drop-shadow(0 0 6px #2dd4bf);
}
.effect_phantom_ghost::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse at 50% 70%, #2dd4bf33, transparent 60%);
    animation: fx_spectralMist 4s ease-in-out infinite alternate;
}
@keyframes fx_ghostDrift { 0% { opacity: 0.7; } 100% { opacity: 1; } }
@keyframes fx_ghostOrbs { 0% { background-position: 10px 80px, 30px 120px, 55px 50px; } 100% { background-position: 25px -160px, 5px -195px, 80px -130px; } }
@keyframes fx_spectralMist { 0% { opacity: 0.4; transform: scale(0.95); } 100% { opacity: 0.9; transform: scale(1.05); } }

/* ==================================================================
   21. HEART FEVER (Floating Love Hearts)
   ================================================================== */
.effect_heart_fever {
    background:
        radial-gradient(ellipse at 50% 100%, #ff0844 0%, #ff4e50 35%, #ff084444 65%, transparent 85%),
        radial-gradient(ellipse at 20% 75%, #ff149366, transparent 45%),
        radial-gradient(ellipse at 80% 80%, #ff6b8166, transparent 45%);
    box-shadow: inset 0 -25px 55px #ff084477;
    animation: fx_heartFeverPulse 1.2s ease-in-out infinite alternate;
}
.effect_heart_fever::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle at 35% 35%, #ffffff 0 1px, #ff1744 4px, #ff174488 8px, transparent 12px),
        radial-gradient(circle at 35% 35%, #ffffff 0 1px, #ff4081 3.5px, #ff408188 7px, transparent 10px),
        radial-gradient(circle at 35% 35%, #ffffff 0 1px, #ff80ab 3px, #ff80ab88 6px, transparent 8px);
    background-size: 38px 48px, 60px 72px, 85px 95px;
    background-position: 10px 80px, 35px 120px, 60px 50px;
    filter: drop-shadow(0 0 8px #ff1744);
    animation: fx_pureHeartsAscend 4s linear infinite;
}
.effect_heart_fever::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse at 50% 80%, #ff174455, transparent 60%);
    animation: fx_heartBloom 2s ease-in-out infinite alternate;
}
@keyframes fx_heartFeverPulse { 0% { opacity: 0.8; transform: scale(1); } 100% { opacity: 1; transform: scale(1.02); } }
@keyframes fx_pureHeartsAscend { to { background-position: 30px -150px, -15px -190px, 80px -130px; } }
@keyframes fx_heartBloom { 0% { opacity: 0.3; } 100% { opacity: 0.8; } }

/* ==================================================================
   22. BROKEN HEART (Shattered Dark Melancholy)
   ================================================================== */
.effect_broken_heart {
    background:
        radial-gradient(ellipse at 50% 100%, #7928ca 0%, #4338ca 35%, #7928ca33 65%, transparent 85%),
        radial-gradient(ellipse at 25% 75%, #ec489955, transparent 40%);
    box-shadow: inset 0 -20px 50px #7928ca55;
    animation: fx_brokenHeartAura 3s ease-in-out infinite alternate;
}
.effect_broken_heart::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #c084fc 0 3px, #7928ca 7px, transparent 10px),
        radial-gradient(circle, #f43f5e 0 2.5px, #be123c 6px, transparent 9px),
        radial-gradient(circle, #818cf8 0 2px, transparent 4px);
    background-size: 35px 45px, 60px 70px, 80px 80px;
    background-position: 10px 10px, 35px 30px, 55px 60px;
    animation: fx_brokenFall 5s linear infinite;
    filter: drop-shadow(0 0 8px #a855f7);
}
.effect_broken_heart::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 2px solid #7928ca66;
    border-radius: inherit;
    box-shadow: 0 0 25px #7928ca55, inset 0 0 20px #ec489933;
    animation: fx_brokenBorder 2s ease-in-out infinite alternate;
}
@keyframes fx_brokenHeartAura { 0% { opacity: 0.7; } 100% { opacity: 1; } }
@keyframes fx_brokenFall { to { background-position: 45px 230px, -20px 250px, 80px 240px; } }
@keyframes fx_brokenBorder { 0% { opacity: 0.4; } 100% { opacity: 0.9; } }

/* ==================================================================
   23. MONEY RAIN (Falling Dollars & Gold Coins)
   ================================================================== */
.effect_money_rain {
    background:
        radial-gradient(ellipse at 50% 100%, #10b981 0%, #059669 30%, #10b98133 60%, transparent 80%),
        radial-gradient(ellipse at 80% 85%, #fbbf2466, transparent 45%),
        linear-gradient(180deg, transparent 20%, #064e3b44 100%);
    box-shadow: inset 0 -25px 50px #10b98166;
    animation: fx_moneyGlow 3s ease-in-out infinite alternate;
}
.effect_money_rain::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle at 40% 40%, #fbbf24 0 4px, #f59e0b 6px, transparent 8px),
        radial-gradient(circle at 40% 40%, #34d399 0 3px, #059669 5px, transparent 7px),
        radial-gradient(circle, #fff 0 1.5px, transparent 3px);
    background-size: 38px 48px, 60px 70px, 85px 85px;
    background-position: 10px 10px, 40px 30px, 25px 60px;
    animation: fx_cashFall 4s linear infinite;
    filter: drop-shadow(0 0 6px #34d399);
}
.effect_money_rain::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(65deg, transparent 30%, #34d39988 50%, transparent 70%);
    background-size: 200% 100%;
    background-position: -200% 0;
    animation: fx_cashSheen 3.5s ease-in-out infinite;
}
@keyframes fx_moneyGlow { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_cashFall { to { background-position: 30px 220px, -15px 240px, 70px 250px; } }
@keyframes fx_cashSheen { 0% { background-position: -200% 0; } 50%, 100% { background-position: 200% 0; } }

/* ==================================================================
   24. FIRE DRAGON (Dragon Fire & Volcanic Sparks)
   ================================================================== */
.effect_fire_dragon {
    background:
        radial-gradient(ellipse at 50% 100%, #dc2626 0%, #ea580c 30%, #f59e0b 50%, transparent 80%),
        radial-gradient(ellipse at 20% 70%, #b91c1c77, transparent 40%);
    box-shadow: inset 0 -30px 60px #dc262688;
    animation: fx_dragonRoar 2s ease-in-out infinite alternate;
}
.effect_fire_dragon::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #fef08a 0 3px, #f59e0b 6px, transparent 9px),
        radial-gradient(circle, #ef4444 0 2.5px, #dc2626 5px, transparent 8px),
        radial-gradient(circle, #f97316 0 2px, transparent 5px);
    background-size: 35px 55px, 60px 85px, 80px 100px;
    background-position: 8px 90px, 30px 140px, 55px 70px;
    animation: fx_dragonBreath 3s linear infinite;
    filter: drop-shadow(0 0 8px #f59e0b);
}
.effect_fire_dragon::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 2px solid #ea580c88;
    border-radius: inherit;
    box-shadow: 0 0 30px #ea580c66, inset 0 0 25px #dc262644;
    animation: fx_dragonBorder 1.5s ease-in-out infinite alternate;
}
@keyframes fx_dragonRoar { 0% { opacity: 0.85; } 100% { opacity: 1; } }
@keyframes fx_dragonBreath { to { background-position: 25px -160px, -20px -210px, 75px -140px; } }
@keyframes fx_dragonBorder { 0% { opacity: 0.5; } 100% { opacity: 1; } }

/* ==================================================================
   25. BUTTERFLY DREAM (Glowing Neon Butterflies)
   ================================================================== */
.effect_butterfly_dream {
    background:
        radial-gradient(ellipse at 50% 100%, #8b5cf6 0%, #06b6d4 35%, #8b5cf633 65%, transparent 85%),
        radial-gradient(ellipse at 80% 75%, #ec489966, transparent 45%);
    box-shadow: inset 0 -20px 50px #8b5cf655;
    animation: fx_butterflyGlow 4s ease-in-out infinite alternate;
}
.effect_butterfly_dream::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle at 35% 35%, #06b6d4 0 3px, #06b6d488 7px, transparent 11px),
        radial-gradient(circle at 35% 35%, #ec4899 0 2.5px, #ec489988 6px, transparent 10px),
        radial-gradient(circle, #fff 0 1.5px, transparent 3px);
    background-size: 35px 45px, 60px 75px, 80px 80px;
    background-position: 10px 80px, 45px 120px, 25px 40px;
    animation: fx_butterfliesFlutter 6s linear infinite;
    filter: drop-shadow(0 0 8px #06b6d4);
}
.effect_butterfly_dream::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse at 50% 70%, #06b6d444, transparent 60%);
    animation: fx_fairyDust 3s ease-in-out infinite alternate;
}
@keyframes fx_butterflyGlow { 0% { opacity: 0.75; } 100% { opacity: 1; } }
@keyframes fx_butterfliesFlutter { to { background-position: 40px -150px, -20px -190px, 70px -120px; } }
@keyframes fx_fairyDust { 0% { opacity: 0.3; } 100% { opacity: 0.8; } }

/* ==================================================================
   26. ROMANTIC ROSES (Falling Velvet Rose Petals)
   ================================================================== */
.effect_romantic_roses {
    background:
        radial-gradient(ellipse at 50% 100%, #991b1b 0%, #b91c1c 30%, #991b1b33 60%, transparent 80%),
        radial-gradient(ellipse at 25% 80%, #e11d4866, transparent 40%),
        linear-gradient(180deg, transparent 30%, #450a0a44 100%);
    box-shadow: inset 0 -25px 50px #991b1b66;
    animation: fx_rosePulse 3s ease-in-out infinite alternate;
}
.effect_romantic_roses::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(ellipse at 50% 30%, #e11d48 0 4px, #be123c 8px, transparent 11px),
        radial-gradient(ellipse at 50% 30%, #f43f5e 0 3px, #e11d48 6px, transparent 9px),
        radial-gradient(circle, #fecdd3 0 1.5px, transparent 3.5px);
    background-size: 35px 45px, 60px 75px, 85px 85px;
    background-position: 8px 10px, 35px 30px, 55px 60px;
    animation: fx_rosePetalsFall 5s linear infinite;
    filter: drop-shadow(0 0 6px #e11d48);
}
.effect_romantic_roses::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse at 50% 80%, #f43f5e44, transparent 60%);
    animation: fx_roseAura 2.5s ease-in-out infinite alternate;
}
@keyframes fx_rosePulse { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_rosePetalsFall { to { background-position: 45px 230px, -20px 250px, 80px 240px; } }
@keyframes fx_roseAura { 0% { opacity: 0.3; } 100% { opacity: 0.7; } }

/* ==================================================================
   27. NEON EQUALIZER (DJ Audio Spectrum Visualizer)
   ================================================================== */
.effect_neon_equalizer {
    background:
        radial-gradient(ellipse at 50% 100%, #06b6d4 0%, #3b82f6 30%, #8b5cf633 60%, transparent 80%),
        linear-gradient(180deg, transparent 40%, #0f172a55 100%);
    box-shadow: inset 0 -20px 50px #06b6d455;
}
.effect_neon_equalizer::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(180deg, transparent 0 60%, #06b6d4 62%, #3b82f6 75%, #ec4899 90%, #f59e0b 100%),
        linear-gradient(180deg, transparent 0 45%, #06b6d4 47%, #3b82f6 65%, #ec4899 85%, #f59e0b 100%),
        linear-gradient(180deg, transparent 0 70%, #06b6d4 72%, #3b82f6 82%, #ec4899 92%, #f59e0b 100%),
        linear-gradient(180deg, transparent 0 50%, #06b6d4 52%, #3b82f6 70%, #ec4899 88%, #f59e0b 100%);
    background-size: 10px 100%, 10px 100%, 10px 100%, 10px 100%;
    background-position: 10% 0, 35% 0, 60% 0, 85% 0;
    background-repeat: no-repeat;
    animation: fx_equalizerJump 0.8s ease-in-out infinite alternate;
    filter: drop-shadow(0 0 10px #06b6d4);
}
.effect_neon_equalizer::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #ec4899 0 3px, transparent 5px),
        radial-gradient(circle, #06b6d4 0 2px, transparent 4px);
    background-size: 40px 50px, 65px 75px;
    background-position: 20px 80px, 60px 120px;
    animation: fx_musicNotesFloat 4s linear infinite;
    filter: drop-shadow(0 0 8px #ec4899);
}
@keyframes fx_equalizerJump { 0% { transform: scaleY(0.6); transform-origin: bottom; } 100% { transform: scaleY(1.1); transform-origin: bottom; } }
@keyframes fx_musicNotesFloat { to { background-position: 35px -140px, 80px -170px; } }

/* ==================================================================
   28. EMOJI PARTY (Joy, Fire & Party Energy)
   ================================================================== */
.effect_emoji_party {
    background:
        radial-gradient(ellipse at 50% 100%, #f59e0b 0%, #ec4899 35%, #8b5cf6 65%, transparent 85%),
        radial-gradient(ellipse at 20% 75%, #3b82f666, transparent 45%);
    box-shadow: inset 0 -20px 50px #f59e0b66;
    animation: fx_emojiPartyGlow 2s ease-in-out infinite alternate;
}
.effect_emoji_party::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle at 40% 40%, #ffeb3b 0 4px, #f59e0b 7px, transparent 10px),
        radial-gradient(circle at 40% 40%, #ff5722 0 3.5px, #d84315 6px, transparent 9px),
        radial-gradient(circle at 40% 40%, #ec4899 0 3px, #c2185b 5px, transparent 8px),
        radial-gradient(circle, #fff 0 2px, transparent 4px);
    background-size: 35px 45px, 55px 65px, 75px 85px, 95px 95px;
    background-position: 10px 80px, 45px 120px, 70px 40px, 20px 60px;
    animation: fx_emojisAscend 4.5s linear infinite;
    filter: drop-shadow(0 0 8px #f59e0b);
}
.effect_emoji_party::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image: radial-gradient(circle, #fff 0 2px, transparent 4px), radial-gradient(circle, #fbbf24 0 2.5px, transparent 5px);
    background-size: 40px 40px, 60px 60px;
    background-position: 10px 20px, 30px 40px;
    animation: fx_emojiSparkles 2s ease-in-out infinite alternate;
}
@keyframes fx_emojiPartyGlow { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_emojisAscend { to { background-position: 25px -140px, -15px -180px, 85px -120px, 40px -160px; } }
@keyframes fx_emojiSparkles { 0% { opacity: 0.3; } 100% { opacity: 0.9; } }

/* ==================================================================
   29. GOLDEN WINGS (Divine Archangel Wings & Feathers)
   ================================================================== */
.effect_golden_wings {
    background:
        radial-gradient(ellipse at 50% 100%, #fbbf24 0%, #f59e0b 30%, #fbbf2433 60%, transparent 80%),
        radial-gradient(ellipse at 50% 30%, #fef08a66, transparent 50%),
        linear-gradient(180deg, transparent 20%, #78350f44 100%);
    box-shadow: inset 0 -25px 50px #fbbf2477;
    animation: fx_divinePulse 3s ease-in-out infinite alternate;
}
.effect_golden_wings::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(ellipse at 50% 30%, #fbbf24 0 3px, #d97706 7px, transparent 10px),
        radial-gradient(ellipse at 50% 30%, #fef08a 0 2.5px, #f59e0b 5px, transparent 8px),
        radial-gradient(circle, #fff 0 2px, transparent 4px);
    background-size: 35px 50px, 60px 75px, 80px 80px;
    background-position: 10px 10px, 40px 30px, 25px 60px;
    animation: fx_wingsFeatherDrift 5s linear infinite;
    filter: drop-shadow(0 0 8px #fbbf24);
}
.effect_golden_wings::after {
    content: "";
    position: absolute;
    inset: 0;
    background: conic-gradient(from 0deg at 50% 50%, transparent, #fbbf2433, transparent 30%, #fef08a33, transparent 60%, #fbbf2433, transparent);
    animation: fx_divineRays 10s linear infinite;
}
@keyframes fx_divinePulse { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_wingsFeatherDrift { to { background-position: 45px 230px, -20px 250px, 70px 240px; } }
@keyframes fx_divineRays { to { transform: rotate(360deg); } }

/* ==================================================================
   30. AURORA BOREALIS (Northern Lights Waves)
   ================================================================== */
.effect_aurora_borealis {
    background:
        radial-gradient(ellipse at 30% 90%, #10b981 0%, #06b6d4 30%, #10b98133 60%, transparent 80%),
        radial-gradient(ellipse at 75% 80%, #8b5cf6 0%, #8b5cf644 30%, transparent 60%),
        linear-gradient(180deg, transparent 30%, #022c2255 100%);
    box-shadow: inset 0 -25px 50px #10b98166;
    animation: fx_auroraShift 6s ease-in-out infinite alternate;
}
.effect_aurora_borealis::before {
    content: "";
    position: absolute;
    inset: 0;
    background: repeating-linear-gradient(65deg,
        transparent 0px, transparent 25px,
        #10b98144 28px, #06b6d444 38px,
        transparent 45px, transparent 70px);
    filter: blur(8px);
    animation: fx_auroraWave 5s ease-in-out infinite alternate;
}
.effect_aurora_borealis::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #fff 0 1.5px, transparent 3px),
        radial-gradient(circle, #a7f3d0 0 2px, transparent 3.5px);
    background-size: 50px 50px, 80px 80px;
    background-position: 10px 20px, 40px 50px;
    animation: fx_polarStars 3s ease-in-out infinite alternate;
}
@keyframes fx_auroraShift { 0% { transform: scale(1); opacity: 0.8; } 100% { transform: scale(1.05); opacity: 1; } }
@keyframes fx_auroraWave { 0% { transform: translateY(0) skewX(-5deg); } 100% { transform: translateY(-15px) skewX(5deg); } }
@keyframes fx_polarStars { 0% { opacity: 0.4; } 100% { opacity: 1; } }

/* ==================================================================
   31. PIXEL RETRO (8-Bit Arcade Gamer)
   ================================================================== */
.effect_pixel_retro {
    background:
        radial-gradient(ellipse at 50% 100%, #ec4899 0%, #8b5cf6 30%, #ec489933 60%, transparent 80%),
        repeating-linear-gradient(0deg, #00000022 0px, #00000022 2px, transparent 2px, transparent 4px);
    box-shadow: inset 0 0 35px #8b5cf655;
}
.effect_pixel_retro::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(90deg, #ec4899 0 6px, transparent 6px),
        linear-gradient(90deg, #fbbf24 0 6px, transparent 6px),
        linear-gradient(90deg, #06b6d4 0 6px, transparent 6px);
    background-size: 24px 8px, 32px 8px, 40px 8px;
    background-position: 10px 80px, 45px 120px, 70px 40px;
    animation: fx_pixelAscend 4s steps(12) infinite;
    filter: drop-shadow(0 0 6px #ec4899);
}
.effect_pixel_retro::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 3px dashed #06b6d488;
    border-radius: inherit;
    animation: fx_pixelBorderFlash 1s steps(2) infinite;
}
@keyframes fx_pixelAscend { to { background-position: 25px -140px, -15px -180px, 85px -120px; } }
@keyframes fx_pixelBorderFlash { 0% { border-color: #06b6d4; } 50% { border-color: #ec4899; } }

/* ==================================================================
   32. LAVA MAGMA (Molten Liquid Magma Flow)
   ================================================================== */
.effect_lava_magma {
    background:
        radial-gradient(ellipse at 50% 100%, #ff3b00 0%, #ff8800 30%, #ff3b0044 60%, transparent 80%),
        radial-gradient(ellipse at 80% 80%, #d9042988, transparent 40%),
        linear-gradient(180deg, transparent 30%, #37061755 100%);
    box-shadow: inset 0 -30px 60px #ff3b0088;
    animation: fx_magmaPulse 2.5s ease-in-out infinite alternate;
}
.effect_lava_magma::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #fff3b0 0 3px, #ff8800 8px, transparent 12px),
        radial-gradient(circle, #ff3b00 0 2.5px, #d90429 7px, transparent 10px),
        radial-gradient(circle, #ffa200 0 2px, transparent 6px);
    background-size: 45px 55px, 75px 85px, 35px 40px;
    background-position: 8px 90px, 30px 130px, 55px 60px;
    animation: fx_magmaBubbles 4s linear infinite;
    filter: drop-shadow(0 0 8px #ff8800);
}
.effect_lava_magma::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 40%, #ff3b0066 80%, #ff8800aa 100%);
    animation: fx_lavaGlow 1.8s ease-in-out infinite alternate;
}
@keyframes fx_magmaPulse { 0% { opacity: 0.85; } 100% { opacity: 1; } }
@keyframes fx_magmaBubbles { to { background-position: 20px -150px, -15px -190px, 70px -130px; } }
@keyframes fx_lavaGlow { 0% { opacity: 0.5; } 100% { opacity: 1; } }

/* ==================================================================
   33. STARRY SHOOTING (Shooting Stars & Comets)
   ================================================================== */
.effect_starry_shooting {
    background:
        radial-gradient(ellipse at 50% 100%, #1e1b4b 0%, #312e81 35%, #1e1b4b44 65%, transparent 85%),
        radial-gradient(ellipse at 80% 70%, #6366f155, transparent 45%);
    box-shadow: inset 0 -20px 50px #4338ca55;
    animation: fx_cosmicNight 5s ease-in-out infinite alternate;
}
.effect_starry_shooting::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(135deg, transparent 0 45%, #ffffff 48%, #38bdf8 52%, transparent 55%),
        linear-gradient(135deg, transparent 0 40%, #ffffff 43%, #818cf8 47%, transparent 50%);
    background-size: 90px 90px, 130px 130px;
    background-position: 0 0, 40px 20px;
    animation: fx_shootingStars 3s linear infinite;
    filter: drop-shadow(0 0 8px #38bdf8);
}
.effect_starry_shooting::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #fff 0 1.5px, transparent 3px),
        radial-gradient(circle, #38bdf8 0 2px, transparent 3.5px),
        radial-gradient(circle, #c084fc 0 1.5px, transparent 2.5px);
    background-size: 40px 40px, 70px 70px, 95px 95px;
    background-position: 10px 20px, 35px 50px, 60px 10px;
    animation: fx_starsTwinkle 3s ease-in-out infinite alternate;
}
@keyframes fx_cosmicNight { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_shootingStars { to { background-position: 180px 180px, 260px 260px; } }
@keyframes fx_starsTwinkle { 0% { opacity: 0.3; } 100% { opacity: 0.9; } }

/* ==================================================================
   34. VAMPIRE GOTHIC (Midnight Gothic Bats & Blood Mist)
   ================================================================== */
.effect_vampire_gothic {
    background:
        radial-gradient(ellipse at 50% 100%, #881337 0%, #4c0519 35%, #88133733 65%, transparent 85%),
        radial-gradient(ellipse at 20% 75%, #e11d4866, transparent 40%),
        linear-gradient(180deg, transparent 30%, #00000088 100%);
    box-shadow: inset 0 -30px 60px #88133788;
    animation: fx_vampirePulse 3s ease-in-out infinite alternate;
}
.effect_vampire_gothic::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle, #e11d48 0 3px, #881337 7px, transparent 10px),
        radial-gradient(circle, #be123c 0 2.5px, #4c0519 6px, transparent 9px),
        radial-gradient(circle, #f43f5e 0 2px, transparent 4px);
    background-size: 35px 45px, 60px 75px, 80px 80px;
    background-position: 10px 80px, 45px 120px, 25px 40px;
    animation: fx_batsAscend 5s linear infinite;
    filter: drop-shadow(0 0 8px #e11d48);
}
.effect_vampire_gothic::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 2px solid #be123c77;
    border-radius: inherit;
    box-shadow: 0 0 25px #be123c55, inset 0 0 25px #4c051944;
    animation: fx_vampireBorder 2s ease-in-out infinite alternate;
}
@keyframes fx_vampirePulse { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_batsAscend { to { background-position: 30px -150px, -15px -190px, 70px -120px; } }
@keyframes fx_vampireBorder { 0% { opacity: 0.4; } 100% { opacity: 0.9; } }

/* ==================================================================
   35. KISS LOVE (Romantic Floating Lips ðŸ’‹)
   ================================================================== */
.effect_kiss_love {
    background:
        radial-gradient(ellipse at 50% 100%, #f43f5e 0%, #fb7185 30%, #f43f5e33 60%, transparent 80%),
        radial-gradient(ellipse at 80% 80%, #fda4af88, transparent 40%),
        linear-gradient(180deg, transparent 30%, #88133744 100%);
    box-shadow: inset 0 -25px 50px #f43f5e66;
    animation: fx_kissPulse 2s ease-in-out infinite alternate;
}
.effect_kiss_love::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(ellipse at 50% 50%, #e11d48 0 4px, #be123c 8px, transparent 11px),
        radial-gradient(ellipse at 50% 50%, #fb7185 0 3px, #f43f5e 6px, transparent 9px),
        radial-gradient(circle, #fff 0 1.5px, transparent 3px);
    background-size: 35px 45px, 60px 75px, 80px 80px;
    background-position: 10px 80px, 45px 120px, 65px 40px;
    animation: fx_kissesAscend 4s linear infinite;
    filter: drop-shadow(0 0 8px #f43f5e);
}
.effect_kiss_love::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse at 50% 80%, #fb718555, transparent 60%);
    animation: fx_kissGlow 2s ease-in-out infinite alternate;
}
@keyframes fx_kissPulse { 0% { opacity: 0.8; } 100% { opacity: 1; } }
@keyframes fx_kissesAscend { to { background-position: 25px -140px, -15px -180px, 80px -120px; } }
@keyframes fx_kissGlow { 0% { opacity: 0.3; } 100% { opacity: 0.8; } }

@media (prefers-reduced-motion: reduce) {
    .profile_effect_overlay,
    .profile_effect_overlay *,
    #preview_effect_layer,
    #preview_effect_layer::before,
    #preview_effect_layer::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
    }
}

/* ====================================================================
   Site Welcome Guide Styling & Animations
   ==================================================================== */
.welcome_guide_box {
    background: #141217;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
}
.welcome_guide_step {
    animation: fadeInStep 0.35s ease-out;
}
@keyframes fadeInStep {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}
.welcome_guide_item {
    background: rgba(255, 255, 255, 0.03);
    padding: 8px 12px;
    border-radius: 10px;
    border: 1px solid rgba(255, 255, 255, 0.04);
}
.welcome_guide_nav_buttons button {
    transition: all 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.welcome_guide_nav_buttons button:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 4px 15px rgba(0,0,0,0.3);
}
.welcome_skip_btn:hover {
    color: #fff !important;
}
@media (max-width: 600px) {
    .welcome_guide_box {
        padding: 15px !important;
    }
    .welcome_guide_steps {
        min-height: 290px !important;
    }
    .welcome_guide_actions {
        flex-direction: column-reverse !important;
        gap: 12px !important;
    }
    .welcome_guide_nav_buttons {
        width: 100% !important;
        justify-content: space-between !important;
    }
    .welcome_skip_btn {
        width: 100% !important;
        text-align: center !important;
    }
}


