custom_css = """ /* Existing styles... */ /* Redemption Ritual Styles */ .ritual-container { text-align: center; padding: 2rem; background: linear-gradient(135deg, #1a0b2e, #0d0519); border-radius: 16px; border: 2px solid #8B5CF6; margin: 1rem 0; color: white; } .ritual-success { background: linear-gradient(135deg, #0f172a, #1e1b4b); padding: 2rem; border-radius: 12px; border: 2px solid #10B981; animation: violetPulse 2s infinite; color: white; } .ritual-error { background: linear-gradient(135deg, #450a0a, #7f1d1d); padding: 2rem; border-radius: 12px; border: 2px solid #EF4444; color: white; } .candle-flicker { font-size: 3rem; animation: flicker 1.5s infinite alternate; display: inline-block; margin-bottom: 1rem; } .violet-pulse { animation: violetPulse 3s infinite; padding: 1rem; margin-top: 1rem; border-radius: 8px; background: rgba(139, 92, 246, 0.1); } @keyframes flicker { 0%, 100% { opacity: 1; transform: scale(1) rotate(0deg); filter: drop-shadow(0 0 10px #8B5CF6); } 25% { opacity: 0.9; transform: scale(1.05) rotate(2deg); filter: drop-shadow(0 0 15px #8B5CF6); } 50% { opacity: 0.8; transform: scale(0.95) rotate(-2deg); filter: drop-shadow(0 0 8px #8B5CF6); } 75% { opacity: 0.95; transform: scale(1.02) rotate(1deg); filter: drop-shadow(0 0 12px #8B5CF6); } } @keyframes violetPulse { 0%, 100% { box-shadow: 0 0 20px rgba(139, 92, 246, 0.5); background: rgba(139, 92, 246, 0.1); } 50% { box-shadow: 0 0 40px rgba(139, 92, 246, 0.8); background: rgba(139, 92, 246, 0.2); } } .vow-input textarea { min-height: 120px !important; background: #0f172a !important; color: white !important; border: 1px solid #8B5CF6 !important; } .ritual-upload { border: 2px dashed #8B5CF6 !important; background: rgba(139, 92, 246, 0.05) !important; } .sigil-display { font-family: 'Courier New', monospace; background: #1f2937; color: #10B981; padding: 1rem; border-radius: 5px; margin: 1rem 0; word-break: break-all; border: 1px solid #10B981; } """