/* --- Join & Invitation Page Visuals --- */ .join-status-visual { margin-bottom: 2rem; position: relative; height: 200px; display: flex; align-items: center; justify-content: center; } .join-status-mascot { display: block; width: 140px; height: auto; z-index: 2; filter: drop-shadow(0 4px 12px rgba(0,0,0,0.15)); } .join-status-mascot.searching-mascot { width: 175px; /* Slightly wider due to antenna to keep main body scale identical */ } .join-status-pulse { animation: mascot-gentle-pulse 2s ease-in-out infinite; } @keyframes mascot-gentle-pulse { 0% { transform: scale(0.96); filter: drop-shadow(0 4px 10px oklch(0.68 0.13 150 / 0.15)); } 50% { transform: scale(1.04); filter: drop-shadow(0 8px 20px oklch(0.68 0.13 150 / 0.35)); } 100% { transform: scale(0.96); filter: drop-shadow(0 4px 10px oklch(0.68 0.13 150 / 0.15)); } } .legal-mascot { display: block; width: 180px; height: auto; margin: -0.75rem auto 0.4rem auto; filter: drop-shadow(0 4px 12px rgba(0,0,0,0.15)); transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); } .legal-mascot:hover { transform: scale(1.06) translateY(-4px) rotate(1.5deg); } .selfhost-mascot { display: block; width: 220px; height: auto; margin: 0 auto; filter: drop-shadow(0 6px 14px oklch(0.15 0.02 145 / 0.22)); } .status-ring { position: absolute; width: 90px; height: 90px; border-radius: 50%; background: oklch(0.68 0.13 150 / 0.05); border: 2px dashed oklch(0.68 0.13 150 / 0.25); z-index: 1; } .status-ring.active-pulse { animation: radar-pulse 3s cubic-bezier(0.25, 0.8, 0.25, 1) infinite; } @keyframes radar-pulse { 0% { transform: scale(0.85); opacity: 0.9; border-color: oklch(0.68 0.13 150 / 0.3); box-shadow: 0 0 0 0px oklch(0.68 0.13 150 / 0.15); } 50% { transform: scale(1.18); opacity: 0.35; border-color: oklch(0.75 0.10 150 / 0.2); box-shadow: 0 0 0 15px oklch(0.75 0.10 150 / 0); } 100% { transform: scale(0.85); opacity: 0.9; border-color: oklch(0.68 0.13 150 / 0.3); box-shadow: 0 0 0 0px oklch(0.68 0.13 150 / 0.15); } } .join-card-actions { display: flex; flex-direction: column; gap: 0.75rem; width: 100%; } .join-card-actions .btn { width: 100%; justify-content: center; padding: 1.1rem; font-size: 0.88rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; } .join-card-actions .btn svg { margin-right: 0.3rem; flex-shrink: 0; } .join-card-actions .btn img { margin-right: 0.3rem; flex-shrink: 0; } .btn-success { background: var(--accent-green); color: var(--text-on-green) !important; box-shadow: 0 10px 15px -3px oklch(0.68 0.13 150 / 0.3); } .btn-success:hover { background: oklch(0.60 0.12 150); transform: translateY(-2px); box-shadow: 0 20px 25px -5px oklch(0.68 0.13 150 / 0.4); }