<!--
Source: https://swappr.fr
Canonical: https://swappr.fr/llm/nsfw.md
Last-updated: 2026-07-09
-->

# Swappr — Politique NSFW et compliance

## Ce qui est autorisé

- Contenu pour adultes (nudité, scènes explicites) **avec votre persona IA fictif** ou **vos propres images**
- Face Swap entre **votre visage** et **votre persona IA**
- Création de personas adultes IA via Avatar Lab

## Ce qui est interdit

- **Deepfakes de personnes réelles non-consentantes** (illégal en France, loi du 21 mai 2024)
- **Contenu impliquant des mineurs** (zéro tolérance, ban immédiat + signalement Pharos)
- **Revenge porn** (illégal)
- **Bestialité, scat, violence sexuelle non-consensuelle** (CGU Swappr)

## Les 3 gates techniques

Côté serveur, l'API et l'UI vérifient à chaque requête :

1. **Droit NSFW** — Pro/Studio inclus ou addon actif sur Starter/Essential. Vérifié via `hasPlanFeature(entitlements, "nsfw")`.
2. **Consentement légal signé** — modal bloquant sur le dashboard au premier toggle NSFW. Stocké en DB avec version (`nsfw_consents` table). L'API ne peut pas signer pour l'utilisateur.
3. **Modèle compatible** — seuls `seedream-45`, `wan-27-image`, `qwen-image`, `grok-imagine`, `nano-banana-2` supportent NSFW. `gpt-image-2` est filtré OpenAI. Liste mise à jour dans `modelAccess.ts`.

Surcharge ×1,25 sur les crédits, **sauf** `nsfw_surcharge_exempt` (affilié 3+ filleuls actifs ou flag admin).

## Mode E-Commerce

La branche E-Commerce force NSFW = OFF (catalogue produits, UGC, ads → contenu safe uniquement). Switch automatique.

## Comment activer

1. Choisir un plan compatible (Pro, Studio ou Essential + pack)
2. Toggler le switch **NSFW** dans la barre haute du dashboard
3. Signer le consentement légal au premier toggle (une fois)
4. Choisir un modèle compatible dans le Studio

## Code couleur

Quand NSFW est actif, la palette du dashboard bascule en mode `.nsfw` :
- Base #0B0B12, Surface #15091A
- Primary #FF2CA6 (pink), Accent #7B2CFF (violet)
- Highlight #00E0FF, Text #E6E666
