.popup-overlay { position: fixed; opacity: 0; visibility: hidden; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(circle at 20% 20%, rgba(255, 211, 90, 0.22), transparent 28%), radial-gradient(circle at 80% 10%, rgba(255, 47, 141, 0.22), transparent 30%), var(--pp-overlay); backdrop-filter: blur(8px); z-index: 1000; pointer-events: none; transition: opacity 0.45s ease, visibility 0s linear 0.45s, backdrop-filter 0.45s ease; } .popup-overlay.active { opacity: 1; visibility: visible; pointer-events: auto; transition-delay: 0s; } .popup { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); max-width: 980px; width: calc(100% - 32px); background: var(--pp-color-bg); border-radius: var(--pp-radius); z-index: 1001; display: flex; overflow: hidden; color: var(--pp-color-text); border: 1px solid rgba(255, 211, 90, 0.45); box-shadow: 0 28px 90px rgba(0, 0, 0, 0.72), 0 0 50px rgba(255, 47, 141, 0.35), inset 0 0 0 1px rgba(255, 255, 255, 0.08); isolation: isolate; opacity: 0; visibility: hidden; pointer-events: none; transform: translate(-50%, -46%) scale(0.94); transition: opacity 0.46s ease, transform 0.56s cubic-bezier(0.16, 1, 0.3, 1), visibility 0s linear 0.56s; will-change: opacity, transform; } .popup.active { opacity: 1; visibility: visible; pointer-events: auto; transform: translate(-50%, -50%) scale(1); transition-delay: 0s; @media (max-width: 760px) { transform: translate(-50%, -45%) scale(1); } } .popup::before { content: ''; position: absolute; inset: -45%; background: conic-gradient( from 90deg, transparent, rgba(255, 211, 90, 0.24), transparent, rgba(255, 47, 141, 0.22), transparent ); z-index: -1; animation: popup-spin 9s linear infinite; } .popup::after { content: ''; position: absolute; inset: 2px; border-radius: calc(var(--pp-radius) - 2px); background: linear-gradient( 120deg, rgba(255, 255, 255, 0.18), transparent 24%, transparent 72%, rgba(255, 211, 90, 0.18) ); pointer-events: none; } .popup-chip { position: absolute; top: 18px; left: 22px; z-index: 2; padding: 8px 16px; border-radius: 999px; background: rgba(255, 211, 90, 0.95); color: #381300; font-size: 13px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; box-shadow: 0 8px 22px rgba(255, 211, 90, 0.36); } .popup-image-wrapper { position: relative; flex: 0 0 44%; padding: 56px 30px 32px; border-radius: var(--pp-radius); display: flex; align-items: center; justify-content: center; overflow: hidden; } .popup-image-wrapper::before { content: ''; position: absolute; width: 210px; height: 210px; border-radius: 50%; background: radial-gradient(circle, rgba(255, 211, 90, 0.5), transparent 70%); filter: blur(2px); animation: popup-pulse 2.8s ease-in-out infinite; } .popup-image { position: relative; z-index: 1; width: min(100%, 340px); height: auto; object-fit: cover; border-radius: 24px; box-shadow: 0 22px 50px rgba(0, 0, 0, 0.52); transform: rotate(-2deg); } .popup-spark { position: absolute; width: 14px; height: 14px; background: var(--pp-color-gold); clip-path: polygon(50% 0, 61% 38%, 100% 50%, 61% 62%, 50% 100%, 39% 62%, 0 50%, 39% 38%); z-index: 2; filter: drop-shadow(0 0 12px rgba(255, 211, 90, 0.85)); animation: popup-twinkle 1.8s ease-in-out infinite; } .popup-spark-one { top: 28%; right: 20%; } .popup-spark-two { bottom: 25%; left: 16%; animation-delay: 0.55s; } .popup-close { position: absolute; top: 18px; right: 18px; z-index: 3; background: rgba(255, 255, 255, 0.08); border: 1px solid var(--pp-color-text); border-radius: 50%; cursor: pointer; width: 34px; height: 34px; display: grid; place-items: center; transition: background-color 0.2s ease, transform 0.2s ease; } .popup-close:hover, .popup-close:focus { background: rgba(255, 255, 255, 0.18); transform: rotate(90deg); } .popup-content { position: relative; padding: 64px 48px 48px; flex-grow: 1; flex-basis: 56%; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; gap: 24px; background: var(--pp-color-panel); border-radius: var(--pp-radius); } .overlay-link { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; } .popup-content-header { color: var(--pp-color-gold); font-size: clamp(32px, 6vw, 72px); font-weight: 900; line-height: 0.9; text-transform: uppercase; text-shadow: 0 0 12px rgba(255, 211, 90, 0.48), 0 4px 0 rgba(0, 0, 0, 0.28); } .popup-content-text { width: 100%; padding: 22px; border: 1px solid rgba(255, 211, 90, 0.28); border-radius: 22px; background: rgba(255, 255, 255, 0.08); box-shadow: inset 0 0 24px rgba(255, 47, 141, 0.12); color: var(--pp-color-text); font-size: clamp(24px, 4vw, 42px); font-weight: 800; line-height: 1.05; @media (max-width: 760px) { padding: 16px; font-size: clamp(18px, 4vw, 42px); } } .rlink { cursor: pointer; } .popup-content-button { pointer-events: auto; position: relative; overflow: hidden; background: var(--pp-color-button); color: var(--pp-color-button-text); border-radius: 999px; padding: 22px 42px; text-decoration: none; text-transform: uppercase; font-weight: 900; font-size: clamp(22px, 3vw, 32px); line-height: 1.5; letter-spacing: 0.04em; transition: transform 0.25s ease, box-shadow 0.25s ease; max-width: 100%; width: 100%; box-shadow: 0 16px 34px rgba(255, 47, 141, 0.38), 0 0 0 6px rgba(255, 211, 90, 0.12); animation: popup-button-pulse 1.8s ease-in-out infinite; cursor: pointer; border: none; @media (max-width: 760px) { padding: 12px; font-size: clamp(18px, 3vw, 32px); } } .popup-content-button::before { content: ''; position: absolute; top: 0; left: -75%; width: 48%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.62), transparent); transform: skewX(-20deg); animation: popup-button-shine 2.6s ease-in-out infinite; } .popup-content-button:hover, .popup-content-button:focus { transform: translateY(-3px) scale(1.02); box-shadow: 0 20px 42px rgba(255, 47, 141, 0.48), 0 0 0 8px rgba(255, 211, 90, 0.18); } .catfish-banner { position: fixed; left: 50%; bottom: 0; z-index: 999; width: min(970px, calc(100% - 32px)); color: var(--pp-color-text); opacity: 0; visibility: hidden; pointer-events: none; transform: translate(-50%, calc(100% + 24px)); transition: opacity 0.4s ease, transform 0.56s cubic-bezier(0.16, 1, 0.3, 1), visibility 0s linear 0.56s; will-change: opacity, transform; } .catfish-banner.active { opacity: 1; visibility: visible; pointer-events: auto; transform: translate(-50%, 0); transition-delay: 0s; z-index: 1001; } .catfish-banner-link { position: absolute; inset: 0; z-index: 2; } .catfish-banner-image-wrapper { position: relative; z-index: 3; display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; align-items: center; gap: 18px; min-height: 86px; padding: 12px 48px 12px 20px; overflow: hidden; border: 1px solid rgba(255, 211, 90, 0.45); border-radius: calc(var(--pp-radius) - 10px); background: var(--pp-color-bg); box-shadow: 0 18px 55px rgba(0, 0, 0, 0.58), 0 0 38px rgba(255, 47, 141, 0.26), inset 0 0 0 1px rgba(255, 255, 255, 0.08); isolation: isolate; pointer-events: none; } .catfish-banner-close, .catfish-banner-content-button { pointer-events: auto; } .catfish-banner-image-wrapper::before { content: ''; position: absolute; inset: 1px; z-index: -1; border-radius: calc(var(--pp-radius) - 11px); background: radial-gradient(circle at 9% 50%, rgba(255, 211, 90, 0.25), transparent 22%), linear-gradient(90deg, rgba(255, 255, 255, 0.16), transparent 45%, rgba(255, 211, 90, 0.13)); } .catfish-banner-close { position: absolute; top: 10px; right: 10px; z-index: 4; display: grid; place-items: center; width: 30px; height: 30px; padding: 0; border: 1px solid rgba(255, 255, 255, 0.16); border-radius: 50%; background: rgba(255, 255, 255, 0.1); color: rgba(255, 255, 255, 0.72); cursor: pointer; transition: background-color 0.2s ease, transform 0.2s ease; } .catfish-banner-close:hover { background: rgba(255, 255, 255, 0.18); transform: rotate(90deg); } .catfish-banner-close path { fill: currentColor; } .catfish-banner-image { width: 72px; height: 72px; object-fit: cover; border-radius: 16px; border: 2px solid rgba(255, 211, 90, 0.58); box-shadow: 0 8px 22px rgba(0, 0, 0, 0.38), 0 0 18px rgba(255, 211, 90, 0.26); } .catfish-banner-content { min-width: 0; } .catfish-banner-content-header { color: var(--pp-color-text); font-size: clamp(18px, 2.2vw, 26px); font-weight: 900; line-height: 1.1; text-shadow: 0 2px 0 rgba(0, 0, 0, 0.28); @media (max-width: 768px) { font-size: 14px; } } .catfish-banner-content-text { margin-top: 6px; color: rgba(255, 255, 255, 0.72); font-size: clamp(11px, 1.2vw, 14px); font-weight: 700; line-height: 1.25; } .catfish-banner-apply { @media (max-width: 768px) { font-size: 14px; } } .catfish-banner-content-button { position: relative; border: none; cursor: pointer; overflow: hidden; justify-self: end; padding: 16px 34px; border-radius: 14px; background: var(--pp-color-button); color: var(--pp-color-button-text); font-size: clamp(13px, 1.4vw, 16px); font-weight: 900; line-height: 1; text-transform: uppercase; white-space: nowrap; box-shadow: 0 12px 24px rgba(255, 47, 141, 0.34), 0 0 0 5px rgba(255, 211, 90, 0.12); animation: popup-button-pulse 1.8s ease-in-out infinite; } .catfish-banner-content-button::before { content: ''; position: absolute; top: 0; left: -75%; width: 48%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.62), transparent); transform: skewX(-20deg); animation: popup-button-shine 2.6s ease-in-out infinite; } @keyframes popup-overlay-fade { from { opacity: 0; } } @keyframes popup-spin { to { transform: rotate(1turn); } } @keyframes popup-pulse { 50% { transform: scale(1.18); opacity: 0.72; } } @keyframes popup-twinkle { 50% { transform: scale(1.55) rotate(25deg); opacity: 0.55; } } @keyframes popup-button-pulse { 50% { transform: scale(1.025); } } @keyframes popup-button-shine { 45%, 100% { left: 125%; } } @media (max-width: 760px) { .popup { flex-direction: column; max-height: calc(100vh - 32px); overflow-y: hidden; } .popup-image-wrapper { flex-basis: auto; padding: 36px 24px 14px; } .popup-image { width: min(78%, 260px); } .popup-content { padding: 26px 22px 30px; } .catfish-banner { bottom: 12px; width: calc(100% - 20px); } .catfish-banner-image-wrapper { grid-template-columns: 56px minmax(0, 1fr); gap: 12px; padding: 10px 12px 12px; } .catfish-banner-image { width: 56px; height: 56px; border-radius: 14px; } .catfish-banner-content-button { grid-column: 1 / -1; justify-self: stretch; text-align: center; padding: 13px 18px; } }