<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8"
/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"
/>
<title>Voyance.guru – Tirage
intuitif</title>
<style>
body
{
margin: 0;
font-family: Georgia, serif;
background: radial-gradient(circle at top, #2d1b4e, #08040f 70%);
color:
#f5ecff;
min-height: 100vh;
display: flex;
justify-content:
center;
align-items:
center;
padding:
30px;
}
.container {
max-width: 760px;
width:
100%;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255,
255, 255, 0.18);
border-radius: 24px;
padding:
35px;
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
backdrop-filter: blur(10px);
}
h1
{
margin-top:
0;
font-size: 42px;
text-align: center;
letter-spacing: 1px;
}
.subtitle {
text-align: center;
opacity:
0.85;
margin-bottom: 30px;
font-size: 18px;
}
label
{
display: block;
margin-top:
18px;
margin-bottom: 8px;
font-size: 16px;
}
input,
select {
width:
100%;
padding:
14px;
border-radius: 12px;
border: none;
font-size: 16px;
box-sizing: border-box;
}
button {
width:
100%;
margin-top:
25px;
padding:
16px;
border-radius: 14px;
border: none;
background: #d8b4ff;
color:
#1a0b2e;
font-size: 18px;
cursor: pointer;
font-weight: bold;
}
button:hover {
background: #ead6ff;
}
.result {
display: none;
margin-top:
30px;
padding:
25px;
border-radius: 18px;
background: rgba(0, 0, 0, 0.25);
line-height: 1.6;
font-size: 18px;
}
.card-title {
font-size: 24px;
margin-bottom: 12px;
color:
#e9ccff;
}
.small {
margin-top:
25px;
font-size: 13px;
opacity:
0.65;
text-align: center;
}
</style>
</head>
<body>
<div class="container">
<h1>Voyance.guru</h1>
<div class="subtitle">
Posez une
question. Recevez un éclairage symbolique.
</div>
<label for="question">Votre
question</label>
<input id="question" type="text"
placeholder="Exemple : que dois-je comprendre de
cette situation ?" />
<label for="theme">Domaine</label>
<select id="theme">
<option value="amour">Amour</option>
<option value="travail">Travail</option>
<option value="argent">Argent</option>
<option value="famille">Famille</option>
<option value="general">Situation
générale</option>
</select>
<button onclick="tirage()">Faire le tirage</button>
<div id="result"
class="result"></div>
<div class="small">
Ce tirage est
symbolique et ne remplace pas un conseil médical, juridique, financier ou
professionnel.
</div>
</div>
<script>
const cartes = [
{
nom: "La Porte entrouverte",
message: "Une possibilité existe, mais elle demande
encore de la clarté. Ne forcez pas la situation. Observez qui fait un pas vers
vous et qui reste immobile."
},
{
nom: "Le Fil rouge",
message: "Quelque chose revient parce que tout n’a pas
encore été compris. Ce n’est pas forcément un signe de retour, mais un signe de
répétition à éclaircir."
},
{
nom: "La Pierre calme",
message: "La réponse ne viendra pas dans l’agitation.
Une décision posée, même petite, aura plus d’effet qu’un grand mouvement
impulsif."
},
{
nom: "Le Miroir voilé",
message: "Une personne ou une situation ne montre pas
tout. Ne remplissez pas les silences avec vos peurs. Attendez un fait
concret."
},
{
nom: "Le Passage",
message: "Vous êtes entre deux étapes. Ce qui semble
bloqué aujourd’hui prépare peut-être un déplacement lent, mais réel."
},
{
nom: "La Clé froide",
message: "La solution existe, mais elle n’est pas
émotionnelle. Il faudra regarder les faits, les dates, les engagements et les
limites."
},
{
nom: "La Main retirée",
message: "Une énergie se retire. Cela peut faire mal,
mais cela vous rend aussi une liberté que vous n’aviez pas complètement
reconnue."
},
{
nom: "Le Signal faible",
message: "Un détail a plus d’importance qu’il n’en a
l’air. Un mot, un retard, une hésitation ou une répétition vous donne déjà une
indication."
}
];
const conseilsTheme
= {
amour: [
"En
amour, ne confondez pas intensité et sécurité.",
"Regardez
les actes plus que les déclarations.",
"Une
vraie présence ne vous laisse pas toujours deviner."
],
travail: [
"Dans le
travail, une clarification pourrait éviter une perte d’énergie.",
"Votre
valeur ne dépend pas de l’urgence des autres.",
"Une
limite posée calmement peut changer la dynamique."
],
argent: [
"Pour
l’argent, évitez une décision prise sous pression.",
"Un
détail pratique mérite d’être vérifié avant de vous engager.",
"La
prudence n’est pas un blocage, c’est une protection."
],
famille: [
"Dans la
famille, tout ne se résout pas par l’explication.",
"Protégez
votre calme avant de chercher à convaincre.",
"Certaines tensions parlent d’anciennes places, pas seulement du
présent."
],
general:
[
"La
situation demande moins de vitesse et plus de discernement.",
"Ce qui
résiste vous indique peut-être où poser une limite.",
"Une
réponse simple existe, mais elle n’est pas forcément immédiate."
]
};
function tirage()
{
const question = document.getElementById("question").value.trim();
const theme
= document.getElementById("theme").value;
const result
= document.getElementById("result");
if (!question) {
result.style.display = "block";
result.innerHTML = "Posez
d’abord une question, même courte.";
return;
}
const carte = cartes[Math.floor(Math.random() * cartes.length)];
const conseil = conseilsTheme[theme][Math.floor(Math.random()
* conseilsTheme[theme].length)];
result.style.display = "block";
result.innerHTML = `
<div class="card-title">${carte.nom}</div>
<p><strong>Votre question
:</strong> ${escapeHtml(question)}</p>
<p>${carte.message}</p>
<p><em>${conseil}</em></p>
`;
}
function escapeHtml(text) {
return text
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
</script>
</body>
</html>