classe et espece
This commit is contained in:
@@ -24,6 +24,11 @@ tags: [
|
||||
"aventurier:Bulle",
|
||||
"aventurier:Gurdil",
|
||||
"aventurier:Jinn",
|
||||
"classe:Barbare",
|
||||
"classe:Barde",
|
||||
"classe:Clerc",
|
||||
"classe:Druide",
|
||||
"classe:Moine",
|
||||
"perso:Kouel",
|
||||
"perso:Maielan",
|
||||
"perso:Liam",
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
title: "inconnu"
|
||||
publishDate: 2026-02-08
|
||||
isEra: true
|
||||
---
|
||||
5
src/content/journal/lastchope.md
Normal file
5
src/content/journal/lastchope.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
title: "La taverne de la dernière chope"
|
||||
publishDate: 2025-12-22
|
||||
isEra: true
|
||||
---
|
||||
@@ -5,13 +5,16 @@ publishDate: 2026-01-18
|
||||
tags: [
|
||||
"lieu:Mine-de-Yeuze",
|
||||
"lieu:Conduit-Nord-Est",
|
||||
"classe:Druidesse",
|
||||
"classe:Barde",
|
||||
"aventurier:Gmas",
|
||||
"aventurier:Nyrae",
|
||||
"aventurier:Bulle",
|
||||
"aventurier:Gurdil",
|
||||
"aventurier:Jinn",
|
||||
"classe:Barbare",
|
||||
"classe:Barde",
|
||||
"classe:Clerc",
|
||||
"classe:Druide",
|
||||
"classe:Moine",
|
||||
"perso:Maielan",
|
||||
"mob:Kruthik",
|
||||
"mob:Vase-Grise",
|
||||
|
||||
@@ -12,6 +12,11 @@ tags: [
|
||||
"aventurier:Bulle",
|
||||
"aventurier:Gurdil",
|
||||
"aventurier:Jinn",
|
||||
"classe:Barbare",
|
||||
"classe:Barde",
|
||||
"classe:Clerc",
|
||||
"classe:Druide",
|
||||
"classe:Moine",
|
||||
"perso:Maielan",
|
||||
"perso:Maielten",
|
||||
"perso:Hope",
|
||||
|
||||
106
src/content/journal/tapisserie.md
Normal file
106
src/content/journal/tapisserie.md
Normal file
@@ -0,0 +1,106 @@
|
||||
---
|
||||
title: "La tapisserie de la taverne"
|
||||
author: "Bulle"
|
||||
publishDate: 2025-12-22
|
||||
tags: [
|
||||
"lieu:La-Taverne-de-la-Derniere-Chope",
|
||||
"aventurier:Gmas",
|
||||
"aventurier:Bulle",
|
||||
"aventurier:Gurdil",
|
||||
"aventurier:Jinn",
|
||||
"aventurier:Orson-Pattes-Givrées",
|
||||
]
|
||||
era: "lastchope"
|
||||
---
|
||||
# La tapisserie de la taverne
|
||||
|
||||
Sur l’un des murs de la taverne, une immense tapisserie a fait son apparition. Le tavernier, fier comme un coq, indique qu’elle est l’œuvre d’un artiste local nommé **Chad-Jay Paydé**.
|
||||
|
||||
Si, au premier regard, la noirceur de l’œuvre a semblé terrifier les aventuriers, ces derniers s’y habituent peu à peu, finissant par en percevoir la ténébreuse beauté.
|
||||
|
||||
>[[G’Mas]] :
|
||||
> *Chad-Jay Paydé, hein ?*
|
||||
|
||||
Soudain, en esthète et érudit [[G'Mas]] s'approche de la toile. Il l'observe intensément, s'arrête, puis change de point de vue. Il se plonge dans une contemplation plus profonde encore, décomposant la scène plan après plan, figure après figure. Dans son esprit, il semble lister chaque parcelle d'inspiration ayant permis de donner vie à cette chose qui gît sur le mur.
|
||||
|
||||
Il décortique chaque détail, notant la lumière qui diffère étrangement entre les personnages. L'œuvre suggère un travail au fusain ou à la mine de charbon, retouché à la mine de plomb et à la mie de pain. Pourtant, les courbes et les volumes manquent de structure préalable ; chaque particule semble détachée de l'autre, comme si le tout n'était pas un assemblage réfléchi, mais une apparition. L'artiste n'est manifestement pas né de l'histoire de l'art, mais illustre simplement des héros venus raconter leurs infortunes.
|
||||
|
||||
> *Ça donne soif…* soupire l'érudit.
|
||||
|
||||
**Le tavernier**, pensant que [[Gmas]] cherche simplement à négocier le prix de la décoration, hausse les épaules et reprend ses activités. [[Gmas]], imperturbable, commande un lait de brebis et demande :
|
||||
|
||||
> *Dites-moi, mon brave, qui a réalisé cette tenture ?*
|
||||
|
||||
[[Orson Pattes Givrées]], dans son rôle de **tavernier**, répond en s'accoudant au comptoir :
|
||||
|
||||
> *C'te truc-là ? C't'un gars du coin. Si j'l'écoutais, il recouvrirait tous les murs d'la bâtisse, intérieur comme extérieur ! Ahah ! Bon, là, pour une fois, j'l'ai laissé faire. Pourquoi c'te question, mon brave ?*
|
||||
|
||||
Il sert les deux chopes de lait restantes et poursuit :
|
||||
|
||||
> *M'dites pas qu'vous en voulez une ! Attendez, il a un nom pas commun… Hmmm… Sûr qu'il est pas d'ici, lui. À moins qu'ce soit un "nom d'artiste" !*
|
||||
|
||||
Il lance un gros clin d’œil complice et s'adresse à l'esthete tapis dans le coeur de [[G'Mas]]... Ce dernier ne vacilla pas d'un yota, plongé dans le regard de l'ours attendant un sourire de son interlocuteur.
|
||||
|
||||
> *Oui, donc son nom... Chappe... non, Chad… Chad-Jay Paydé ! Nan mais, vous parlez d'un nom...*
|
||||
|
||||
Il se remet à essuyer la même chope sale avant de la ranger prestement sur l'étagère.
|
||||
|
||||
[[Gurdil]], dans son coin, grommelle dans sa barbe :
|
||||
|
||||
> *Chad a encore récidivé…*
|
||||
|
||||
[[Gmas]], sans prêter attention au nain, reprend :
|
||||
|
||||
> *Vous n’allez pas me croire, tavernier, mais je pense l'avoir déjà croisé lors de l'un de mes nombreux voyages dans ce monde éthéré que vous appelez "sommeil". De l'autre côté des contrées, ses œuvres prolifèrent grâce à un étrange mécanisme… Ça fonctionne comme un vœu : aussitôt dit, aussitôt fait.*
|
||||
|
||||
Il porte la chope à ses lèvres, laissant le liquide blanc disparaître dans son gosier.
|
||||
|
||||
> *Vous pourriez peut-être lui demander de fabriquer quelque chose pour essuyer vos chopes, à l'occasion ?*
|
||||
|
||||
Finit-il par dire en s'essuyant les lèvres d'un revers de main, tel un batracien des sables.
|
||||
|
||||
> *Si j’en veux une, vous dites ? Pourquoi pas… Mais comment pourrais-je le rencontrer, ce Chad ? Vit-il caché ? Est-ce un loup solitaire ?*
|
||||
|
||||
Soudain, trouvant l’ambiance de la taverne trop morose, [[Gurdil]] décide de l'animer à sa façon. Il grimpe sur une table et se retrouve en caleçon.
|
||||
|
||||
> [!success] Ambiance Disco
|
||||
|
||||
> *Oh ! Un disco-nain !* s'exclame **le tavernier**. *C'est le *Saturday Night Fever* ou quoi ?*
|
||||
|
||||
> *On ne m’appelle pas **Cul Brillant** pour rien !* éructe [[Gurdil]]. *Je vais mettre l'ambiance dans ce donjon !*
|
||||
|
||||
[[Bulle]] la fée, dans son coin, sourit de la situation. Le maître des lieux, lui, revient à [[Gmas]], l'air perplexe :
|
||||
|
||||
> [!error] Lancer de dés
|
||||
>
|
||||
>**Jet de Bluff** : 5 (1d20-1).
|
||||
>
|
||||
>**Résultat** : Échec critique. Le tavernier n'a absolument rien compris à ce qui était en train de se passer. Mais fait mine d'avoir tout saisi.
|
||||
|
||||
> *Pour sûr, mon gars ! Alors, je vais vous noter son adresse…*
|
||||
|
||||
Il cherche de quoi écrire fébrilement...
|
||||
|
||||
> *Ah, c'est pas vrai, c'est toujours quand on en a besoin qu'on ne trouve pas de papier ! Tenez, ça fera l'affaire.*
|
||||
|
||||
Il sort un papier gras ayant servi à emballer quelque chose d'indéfinissable et trace un plan raturé.
|
||||
|
||||
> *C'est pas compliqué ! Vous descendez la rue, vous tournez à gauche après la statue de l'ancien maire. Vous contournez l'édifice et c'est la petite bicoque quelques mètres plus loin. Par contre, j'vous aurais prévenu : il est pas comme tout le monde, le bougre. Pas méchant, mais il comprend pas toujours tout.*
|
||||
|
||||
Il tend le papier griffonné. En bas du plan, une note étrange est inscrite : `chatgpt.com`.
|
||||
|
||||
>*Dites, mon brave [[Gmas]], vot’ami nain, là… il a amené sa propre conso ? J’ai pas souvenir d’lui avoir servi quoi que ce soit… Et c'est normal, son sous-vêtement qui luit ?*
|
||||
|
||||
Pendant que la fée sort un nécessaire de cuisine de camp pour préparer du pop-corn, [[Gmas]] termine sa dernière gorgée et claque son godet sur le bar avec un fracas qui fait sursauter l'assemblée. Le silence se fait brusquement.
|
||||
|
||||
> *Laissez-moi nous présenter !* lance [[Gmas]] en désignant le nain. *Voici [[Gurdil]], dit "Cul Brillant", celui qui fait scintiller la bâtisse ! Croyez-moi, ce soir, vous allez remuer votre popotin !*
|
||||
|
||||
> [!success] Une musique d'aventure s'élève d'un coin sombre
|
||||
|
||||
Des étincelles tournoient, révélant la viole verticale de [[Jinn]], le génasi de feu.
|
||||
|
||||
L'assemblée, conquise, se met à frapper des mains au rythme du son et des lumières. Plus personne ne se soucie du batracien.
|
||||
|
||||
> [!success] La fête bat son plein
|
||||
|
||||
Au petit matin, alors que les vapeurs d'alcool s'évaporaient, on remarqua une chose étrange : la toile de Chad-Jay Paydé avait disparu du mur.
|
||||
@@ -7,4 +7,21 @@ classes_detail:
|
||||
niveau: 1
|
||||
---
|
||||
|
||||
Fille de la lune et du savoir ancestral.
|
||||
Je suis Bulle aux Mains d’Or est une jeune fée membre de l’élite guérisseuse de la Colonie
|
||||
Lumiflorale. Née avec un don naturel pour la magie de lumière et la guérison, elle possède
|
||||
une sensibilité particulière aux plantes et à la vie, capable de créer des remèdes rares
|
||||
grâce à son talent d’herboristerie.
|
||||
|
||||
Choisie par le Cercle Solaire pour devenir une sage et enseignante, elle doit d’abord
|
||||
accomplir un rite essentiel : voyager dans le monde matériel afin d’en découvrir les
|
||||
maladies, les émotions complexes et les souffrances réelles que les fées ne connaissent
|
||||
pas. Ce périple forgera sa sagesse et son expérience, nécessaires pour transmettre un jour
|
||||
son savoir.
|
||||
|
||||
Bienveillante, curieuse et parfois un peu naïve, Bulle explore ce nouveau monde avec
|
||||
l’objectif d’apporter de la lumière là où règnent l’ombre et la douleur, et de rapporter à sa
|
||||
colonie une compréhension plus profonde de la vie au-delà du Feywild.
|
||||
Avant de quitter sa colonie, les fées lui ont confiées :
|
||||
- une poudre luminescente qui amplifie ses sorts de lumière
|
||||
- un nœud de lierre éternel symbole de lien avec sa terre natale
|
||||
- une goutte de lune scellée dans une fiole, destinée à la guider dans les moments de doute.
|
||||
|
||||
@@ -20,7 +20,7 @@ traits_espece: ["Peau toxique", "Saut de grenouille", "Amphibie", "Vigilance Arb
|
||||
capacites_classe: ["Méditation", "Arts Martiaux", "Marchand de sable"]
|
||||
armes: ["Souffle-Quart"]
|
||||
outils: ["Matériel d'alchimiste", "Tenue de rechange", "Sac à dos", "Sac de couchage", "Gamelle", "Boîte à Amadou", "10 torches", "10 jours de rations", "Outre", "15m de cordes" ]
|
||||
sorts: ["Sommeil (Marchand de Sable)"]
|
||||
sorts: ["Sommeil"]
|
||||
description_physique: "Un Grung à la peau tannée par le sable, portant un sablier en bandoulière et des vêtements de voyage usés mais fonctionnels."
|
||||
---
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
nom: "Gurdill"
|
||||
titre: "Cul Brillant"
|
||||
espece: "nain"
|
||||
niveau_global: 2
|
||||
classes_detail:
|
||||
@@ -7,4 +8,14 @@ classes_detail:
|
||||
niveau: 1
|
||||
---
|
||||
|
||||
Brute au grand coeur, forgé dans les montagnes.
|
||||
Je suis Gurdill Cul Brillant, un ancien membre déchu de la famille royale des nains, réputée pour sa richesse et son savoir-faire en matière de forge et de gemmologie. Mon surnom, "cul brillant", fait seulement référence à mon allure flamboyante grâce à mon caleçon en mithtril.
|
||||
|
||||
Dans notre royaume, la hiérarchie est stricte. Passionné par les découvertes en dehors des mines et les histoires des autres royaumes, je me heurtais souvent aux attentes traditionnelles de ma famille. Un jour, lors d'une expédition à la recherche de gemmes rares, j'enfreignis les règles en m'éloignant trop de mon groupe. Je découvris une antique forge elfique, une merveille oubliée. Dans ma curiosité, je tentai de prendre un artefact magique, mais cela provoqua un effondrement qui dévasta la cavité.
|
||||
|
||||
Cette négligence me valut d'être condamné à l'exil par mon propre père, le roi. Trahi par les miens, je quittai le royaume, mais non sans emporter un trésor inestimable : un mythique marteau de forge elfique, censé me conférer de grands pouvoirs. Et bien sûr ma hache !
|
||||
|
||||
Exilé, j'errai à travers les montagnes et les forêts, mais ma vie ne fut pas celle d'un fugitif désespéré. Je m'installai dans un petit village au pied des montagnes, où je me liai d'amitié avec des artisans locaux. Ensemble, nous redécouvrîmes des techniques de forge anciennes.
|
||||
|
||||
Au fil du temps, je construisis une nouvelle vie, mêlant tradition naine et techniques de forge originales. Bien que mon cœur restât attaché à mon royaume natal, je trouvai une nouvelle famille parmi ces artisans, apprenant à apprécier la simplicité et la beauté du quotidien.
|
||||
|
||||
Mais ma soif d'aventure refit un jour surface...
|
||||
|
||||
10
src/content/personnages/jiin.md
Normal file
10
src/content/personnages/jiin.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
nom: "Jiin"
|
||||
espece: "genasi"
|
||||
niveau_global: 2
|
||||
classes_detail:
|
||||
- nom: "barde"
|
||||
niveau: 1
|
||||
---
|
||||
|
||||
Je suis en quête de trouver l'épée de mes ancêtres (une sorte d'épée double lames) afin de prouver que ma famille a eu une importance dans les différents conflits qu'il y a eu. En attendant, dès qu'il y a un groupe d'aventuriers qui me semblent sympathique, je me lie avec eux et en avant. Je suis hyper sociable mais assez susceptible quand on me dit que je ne sers à rien sauf à faire le pitre.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
nom: "Jinn"
|
||||
espece: "genasi"
|
||||
niveau_global: 2
|
||||
classes_detail:
|
||||
- nom: "barde"
|
||||
niveau: 1
|
||||
---
|
||||
|
||||
Brute au grand coeur, forgé dans les montagnes.
|
||||
@@ -7,4 +7,27 @@ classes_detail:
|
||||
niveau: 1
|
||||
---
|
||||
|
||||
Brute au grand coeur, forgé dans les montagnes.
|
||||
Je suis Nyraë du Cercle d’Aluna, - "Souffle Nocturne"- c'est ainsi que les soeurs m'ont nommée.
|
||||
Une sororité de druidesses humaines.
|
||||
|
||||
Retrouvée bébé à la lisière de la forêt, la confrérie d’Aluna m’a recueillie, nommée, et élevée. Elles
|
||||
m’ont transmis leur savoir, leurs chants, et l’histoire de la forêt.
|
||||
|
||||
Mon apprentissage fut aussi rigoureux que celui des autres : j’ai appris à connaître la nature, à
|
||||
préparer des potions, des onguents, et des poisons.
|
||||
|
||||
Parfois, nous quittons la forêt pour prodiguer des soins aux villages voisins, mais nous n’y restons
|
||||
jamais longtemps.
|
||||
|
||||
Ma plus grande peur ? Le feu.
|
||||
|
||||
Avec leur bénédiction, et forte d’une solide expérience druidique, j’ai quitté la forêt, seule —
|
||||
portant ma broche Violette, symbole de mon rang et de mon clan — pour partir à la rencontre du
|
||||
peuple dont je suis née, mais que je ne connais pas.
|
||||
|
||||
Je ne possède qu’une direction, lointaine, au-delà de mon bois d’adoption.
|
||||
|
||||
Je suis d’un naturel silencieux : j’observe avant d’agir. Curieuse, loyale, un brin boudeuse si l’on
|
||||
me taquine trop.
|
||||
|
||||
Je ne sais pas vraiment m’amuser… enfin, je n’ai jamais vraiment appris.
|
||||
|
||||
22
src/content/personnages/orson.md
Normal file
22
src/content/personnages/orson.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
nom: "Orson"
|
||||
titre: "Pattes Givrées"
|
||||
espece: "artionis"
|
||||
niveau_global: 2
|
||||
classes_detail:
|
||||
- nom: "druide"
|
||||
niveau: 1
|
||||
- nom: "ensorceleur"
|
||||
niveau: 1
|
||||
---
|
||||
|
||||
"Mon nom ? Orson, mais vous le savez déjà. Ah, vous voulez en savoir plus sur moi ? Je n'en vois pas trop l'intérêt. On a été engagés pour une mission, on s'en occupe et je reprends la route. Oui, je sais, on me le dit souvent : je suis aussi froid que ma magie ou ma patrie. Se faire confiance ? Pour la première fois, ses interlocuteurs voient un sourire se dessiner sur le visage de l'artionis polaire : un sourire fade, sans émotion... froid Vous m'avez pris pour un halfelin ? Bon, très bien. Après tout, si je ne parle jamais de mon histoire, je ne trouverai jamais de piste, je suppose.
|
||||
|
||||
Je suis donc né dans les terres gelées du nord au sein d'un cercle druidique dont ma mère fait partie. Pourquoi des druides si loin de toutes civilisations ? Je vois que vous avez autant de connaissances sur notre ordre que sur les terres du nord. Nous ne sommes pas là que pour essayer de garder un équilibre entre vos villes poisseuses et notre mère à tous. Nous veillons aussi pour éviter qu'un mal plus grand encore ne prenne racine dans les régions sauvages sans qu'on ne s'en aperçoive. Des créatures d'un autre plan, par exemple.
|
||||
J'ai donc grandi au sein de ce cercle avec ma mère et Orphea, ma soeur de portée - excusez-moi, vous dites plutôt "ma soeur jumelle" - et les quelques autres druides. Je n'ai presque aucun souvenir de mon père : il ne faisait pas parti du cercle et n'est pas resté longtemps auprès de ma mère. Ce n'est apparemment pas dans les coutumes artionis de "fonder une famille".
|
||||
.
|
||||
Il y a quelques années, alors qu'Orphea et moi revenions auprès des nôtres après une excursion, nous avons remarqué un groupe d'humains installant un campement. Nous les avons observés de loin un instant mais j'ai fait une erreur, révélant notre position. Je ne sais toujours pas ce qu'ils voulaient, il n'y a eu aucune discussion. A la place, l'accueil fut assez explosif, au sens propre du terme : ces visiteurs maîtrisaient apparemment la magie. Nous nous sommes défendus comme nous le pouvions tous les deux mais je me suis retrouvé rapidement hors de combat. Mes derniers souvenirs étant ceux de ma soeur qui se battait toujours.
|
||||
Ensuite ? Je me suis réveillé auprès des miens. Nous étions assez proches pour qu'ils puissent nous retrouver. Enfin, nous... je veux dire ME retrouver. En effet, aucune trace de ma soeur. Moi, j'étais aux portes de la mort et il s'en est fallu de peu pour que je ne les franchisse pas. J'ai eu la chance de n'y laisser qu'un oeil. A la place, j'y ai gagné ces pouvoirs magiques que je contrôle encore mal : en effet, il semblerait qu'ils se soient manifestés au moment où j'ai réalisé que mon erreur nous avait coûté Orphea. Ça non plus, je n'en ai pas le souvenir.
|
||||
|
||||
Depuis, je voyage à la recherche de ces mages. J'ai appris à travailler sur un bateau pour pouvoir couvrir mes frais, vu que tout ici se monnaye. Ou alors, j'offre mes compétences de druide et d'ensorceleur des glaces aux plus offrants, contre de quoi vivre ou des informations concernant la seule piste que j'ai jusque là : le symbole que portaient ces humains sur leur vêtements ou sur leur peau directement. Ce symbole là."
|
||||
Le grand ours polaire ouvrit alors sa tunique, révélant son torse dont la partie droite était dépourvue de fourrure. A la place, une marque gravée au fer rouge représentant un oeil ouvert au centre d'un hexagone, celui-ci entouré d'étoiles.
|
||||
@@ -30,28 +30,41 @@ const { title } = Astro.props;
|
||||
@import url("https://fonts.googleapis.com/css2?family=Cinzel:wght@700&display=swap");
|
||||
|
||||
:root {
|
||||
/* Palette de base */
|
||||
--color-parchment: #fdf6e8;
|
||||
--color-ink: #4a4130;
|
||||
--color-gold: #c89b3c;
|
||||
--color-gold-dark: #b8860b;
|
||||
--color-ancient-blue: #3f51b5; /* Le bleu dominant */
|
||||
--color-ancient-purple: #673ab7; /* Les ombres de l'illustration */
|
||||
--color-ancient-gold: #f4d03f; /* Les touches de lumière ocre */
|
||||
--color-bg-canvas: #fdf6e8; /* Ton parchemin actuel */
|
||||
|
||||
/* Nuancier des Callouts (Tes Surcharges) */
|
||||
--co-info: #3f51b5;
|
||||
--co-success: #2e7d32;
|
||||
--co-warning: #f57c00;
|
||||
--co-error: #8b0000;
|
||||
--co-todo: #455a64;
|
||||
--co-quote: #9e9e9e;
|
||||
--co-abstract: #0097a7;
|
||||
}
|
||||
|
||||
/* Reset de base */
|
||||
/* --- BASE & STRUCTURE --- */
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
body {
|
||||
background-color: var(--color-parchment);
|
||||
color: var(--color-ink);
|
||||
font-family: "Calibri", "Segoe UI", sans-serif; /* Ta police Calibri */
|
||||
font-family: "Calibri", "Segoe UI", sans-serif;
|
||||
margin: 0;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
main {
|
||||
width: 100%;
|
||||
max-width: 1000px;
|
||||
margin: 0 auto;
|
||||
padding: 2rem 1.5rem;
|
||||
}
|
||||
|
||||
hr {
|
||||
border: 0;
|
||||
height: 1px;
|
||||
@@ -64,16 +77,12 @@ const { title } = Astro.props;
|
||||
margin: 2.5rem 0;
|
||||
}
|
||||
|
||||
/* LE FIX DES MARGES : C'est ce bloc qui centre tout ton site */
|
||||
main {
|
||||
width: 100%;
|
||||
max-width: 1000px; /* Largeur confortable pour Lenovo et Samsung */
|
||||
margin: 0 auto; /* Centre le bloc horizontalement */
|
||||
padding: 2rem 1.5rem; /* Marges internes pour que rien ne touche les bords */
|
||||
/* --- TYPOGRAPHIE & LIENS --- */
|
||||
main strong {
|
||||
color: var(--color-gold-dark);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/* --- 1. LES WIKILINKS [[Concept]] --- */
|
||||
/* Le plugin transforme [[Concept]] en <a href="/concept">Concept</a> */
|
||||
main a[href] {
|
||||
color: var(--color-gold-dark);
|
||||
font-weight: bold;
|
||||
@@ -91,132 +100,149 @@ const { title } = Astro.props;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
|
||||
/* --- STYLE DES TABLEAUX MARKDOWN (GFM) --- */
|
||||
/* --- TABLEAUX (GFM) --- */
|
||||
main table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 2.5rem 0;
|
||||
background-color: #ffffff; /* Fond blanc pour faire ressortir l'alternance */
|
||||
background-color: #ffffff;
|
||||
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
|
||||
overflow: hidden; /* Pour que les coins arrondis fonctionnent avec le fond des th */
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Entête du tableau */
|
||||
main th {
|
||||
background-color: var(--color-gold);
|
||||
color: white;
|
||||
font-family: "Cinzel", serif;
|
||||
text-transform: uppercase;
|
||||
font-size: 0.85rem;
|
||||
letter-spacing: 1px;
|
||||
padding: 15px;
|
||||
text-align: left;
|
||||
border: 1px solid var(--color-gold-dark);
|
||||
}
|
||||
|
||||
main th strong {
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* Cellules standards */
|
||||
main td {
|
||||
padding: 12px 15px;
|
||||
border: 1px solid rgba(200, 155, 60, 0.2);
|
||||
border: 1px solid rgba(200, 155, 60, 0.1);
|
||||
font-size: 0.95rem;
|
||||
color: var(--color-ink);
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
/* --- L'ALTERNANCE (LE ZEBRA) --- */
|
||||
/* On applique un fond léger sur les lignes paires (even) */
|
||||
main tr:nth-child(even) {
|
||||
background-color: rgba(200, 155, 60, 0.06);
|
||||
background-color: rgba(200, 155, 60, 0.04);
|
||||
}
|
||||
|
||||
/* Effet au survol de la ligne pour ne pas perdre le fil */
|
||||
main tr:hover {
|
||||
background-color: rgba(200, 155, 60, 0.12);
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
/* Ajustement pour le gras à l'intérieur des tableaux */
|
||||
main td strong {
|
||||
color: var(--color-gold-dark);
|
||||
}
|
||||
|
||||
/* --- 3. LES GRAS ET SOULIGNÉS --- */
|
||||
main strong {
|
||||
color: var(--color-gold-dark);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/* 3. Correction Tableaux : Assurer l'affichage sur mobile */
|
||||
@media (max-width: 640px) {
|
||||
main table {
|
||||
display: block;
|
||||
overflow-x: auto; /* Permet de scroller le tableau s'il est trop large sur ton Samsung */
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
/* Style pour les lignes alternées de tes tableaux (Aventuriers/Personnages) */
|
||||
main table tr:nth-child(even) {
|
||||
background-color: rgba(200, 155, 60, 0.08);
|
||||
}
|
||||
|
||||
main table tr:hover {
|
||||
background-color: rgba(200, 155, 60, 0.15);
|
||||
/* --- SYSTEME DE CALLOUTS (FORCE BRUTE) --- */
|
||||
|
||||
/* 1. Squelette commun : On cible très précisément */
|
||||
main blockquote,
|
||||
main [data-callout] {
|
||||
--c-accent: var(--color-gold) !important; /* Valeur de secours */
|
||||
margin: 2rem 0 !important;
|
||||
padding: 1.5rem !important;
|
||||
border-left: 5px solid var(--c-accent) !important;
|
||||
background-color: color-mix(
|
||||
in srgb,
|
||||
var(--c-accent),
|
||||
transparent 92%
|
||||
) !important;
|
||||
border-radius: 0 8px 8px 0 !important;
|
||||
color: var(--color-ink) !important;
|
||||
}
|
||||
|
||||
/* --- RÉPARATION DU RENDU ET STYLE CALLOUT --- */
|
||||
main blockquote {
|
||||
margin: 2rem 0;
|
||||
padding: 1.5rem;
|
||||
background-color: rgba(200, 155, 60, 0.05);
|
||||
border-left: 5px solid var(--color-gold);
|
||||
border-radius: 0 8px 8px 0;
|
||||
color: var(--color-ink);
|
||||
/* Titre : On force la couleur de l'accent ici aussi */
|
||||
main [data-callout] .callout-title {
|
||||
display: flex !important;
|
||||
align-items: center !important;
|
||||
font-family: "Cinzel", serif !important;
|
||||
font-weight: bold !important;
|
||||
text-transform: uppercase !important;
|
||||
color: var(--c-accent) !important;
|
||||
margin-bottom: 0.5rem !important;
|
||||
}
|
||||
|
||||
/* LA GRILLE : Flexbox pour éviter le débordement mobile */
|
||||
/* Nettoyage radical des icônes SVG/Éclair */
|
||||
main [data-callout] .callout-icon,
|
||||
main [data-callout] svg {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Ajout de l'icône personnalisée */
|
||||
main [data-callout] .callout-title::before {
|
||||
margin-right: 12px;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
/* 2. SURCHARGES DES NUANCIERS (L'ordre est crucial) */
|
||||
|
||||
/* ERROR : On redéfinit la variable pivot */
|
||||
main [data-callout="error"],
|
||||
main [data-callout="fail"] {
|
||||
--c-accent: var(--co-error) !important;
|
||||
}
|
||||
main [data-callout="error"] .callout-title::before,
|
||||
main [data-callout="fail"] .callout-title::before {
|
||||
content: "🎲";
|
||||
}
|
||||
|
||||
/* SUCCESS */
|
||||
main [data-callout="success"],
|
||||
main [data-callout="done"] {
|
||||
--c-accent: var(--co-success) !important;
|
||||
}
|
||||
main [data-callout="success"] .callout-title::before {
|
||||
content: "✨";
|
||||
}
|
||||
|
||||
/* INFO */
|
||||
main [data-callout="info"],
|
||||
main [data-callout="note"] {
|
||||
--c-accent: var(--co-info) !important;
|
||||
}
|
||||
main [data-callout="info"] .callout-title::before {
|
||||
content: "📜";
|
||||
}
|
||||
|
||||
/* Application aux textes gras internes */
|
||||
main [data-callout] strong {
|
||||
color: var(--c-accent) !important;
|
||||
}
|
||||
|
||||
/* --- GRILLE & CARTES --- */
|
||||
.card-grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 20px;
|
||||
justify-content: center;
|
||||
padding: 20px 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* LE STYLE DES CARTES (FORCE LE LOOK D'INDEX) */
|
||||
.gold-button {
|
||||
flex: 1 1 300px;
|
||||
max-width: 400px;
|
||||
min-height: 120px;
|
||||
background: white !important;
|
||||
border: 1px solid var(--color-gold) !important;
|
||||
border-radius: 12px !important;
|
||||
padding: 20px !important;
|
||||
border-radius: 12px;
|
||||
padding: 20px;
|
||||
text-decoration: none !important;
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
align-items: center !important;
|
||||
justify-content: center !important;
|
||||
transition:
|
||||
transform 0.2s ease,
|
||||
box-shadow 0.2s ease;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05) !important;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
|
||||
transition: transform 0.2s ease;
|
||||
}
|
||||
|
||||
.gold-button:hover {
|
||||
transform: translateY(-5px);
|
||||
border-color: var(--color-gold-dark) !important;
|
||||
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1) !important;
|
||||
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.gold-button .title {
|
||||
font-family: "Cinzel", serif !important;
|
||||
color: var(--color-gold-dark) !important;
|
||||
font-size: 1.1rem !important;
|
||||
font-family: "Cinzel", serif;
|
||||
color: var(--color-gold-dark);
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 8px;
|
||||
text-align: center;
|
||||
@@ -252,11 +278,15 @@ const { title } = Astro.props;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
/* MOBILE : On élargit au maximum */
|
||||
/* --- MOBILE --- */
|
||||
@media (max-width: 640px) {
|
||||
.card-grid {
|
||||
padding: 10px;
|
||||
}
|
||||
main table {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
}
|
||||
.gold-button {
|
||||
flex: 1 1 100%;
|
||||
}
|
||||
|
||||
@@ -44,25 +44,28 @@ const classData = personnages.reduce((acc, p) => {
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
// 2. Groupement par ESPECE (Bordure HAUT = Classe principale)
|
||||
// 2. Groupement par ESPECE (Bordure HAUT = Couleurs des classes)
|
||||
const especeData = personnages.reduce((acc, p) => {
|
||||
if (!p.data.espece) return acc;
|
||||
const key = p.data.espece.toLowerCase();
|
||||
if (!acc[key]) acc[key] = [];
|
||||
|
||||
const mainClassName = p.data.classes_detail?.[0]?.nom;
|
||||
const pClassData = classes.find(
|
||||
(cl) =>
|
||||
cl.id.toLowerCase() === mainClassName?.toLowerCase() ||
|
||||
cl.data.title?.toLowerCase() === mainClassName?.toLowerCase(),
|
||||
);
|
||||
const encreKey = pClassData?.data.encre?.toLowerCase();
|
||||
// On récupère les couleurs de TOUTES les classes du personnage
|
||||
const classColors = (p.data.classes_detail || []).map((c) => {
|
||||
const pClassData = classes.find(
|
||||
(cl) =>
|
||||
cl.id.toLowerCase() === c.nom?.toLowerCase() ||
|
||||
cl.data.title?.toLowerCase() === c.nom?.toLowerCase(),
|
||||
);
|
||||
const encreKey = pClassData?.data.encre?.toLowerCase();
|
||||
return SPECTRUM[encreKey] || "#ffffff";
|
||||
});
|
||||
|
||||
acc[key].push({
|
||||
id: p.id, // ID nécessaire pour le lien
|
||||
id: p.id,
|
||||
nom: p.data.nom,
|
||||
niveau: p.data.niveau_global || 1,
|
||||
colorEncre: SPECTRUM[encreKey] || "#ffffff",
|
||||
colors: classColors, // Tableau de couleurs (1 ou plusieurs)
|
||||
});
|
||||
return acc;
|
||||
}, {});
|
||||
@@ -75,6 +78,12 @@ const especeData = personnages.reduce((acc, p) => {
|
||||
<div class="dnd-bar"></div>
|
||||
<p class="dnd-intro">
|
||||
La classe définit vos compétences et votre rôle.
|
||||
<br />
|
||||
<span style="color:rgba(147, 72, 255, 1)">Arcane</span>,
|
||||
<span style="color:rgba(230, 57, 70, 1)">Martial</span>,
|
||||
<span style="color:rgba(100, 100, 100, 1)">Neutre</span>
|
||||
<span style="color:rgba(200, 155, 60, 1)">Sacré</span>,
|
||||
<span style="color:rgba(42, 157, 143, 1)">Primal</span>
|
||||
</p>
|
||||
|
||||
<div class="class-grid">
|
||||
@@ -125,7 +134,13 @@ const especeData = personnages.reduce((acc, p) => {
|
||||
<h2 class="dnd-title">Choisissez votre Espèce</h2>
|
||||
<div class="dnd-bar"></div>
|
||||
<p class="dnd-intro">
|
||||
L'espèce influence votre apparence et votre histoire.
|
||||
L'espèce influence votre apparence et votre histoire
|
||||
<br />
|
||||
<span style="color: rgba(200, 155, 60, 1)">solaire</span>,
|
||||
<span style="color: rgba(0, 171, 255, 1)">elementaire</span>,
|
||||
<span style="color: rgba(139, 69, 19, 1)">terrestre</span>,
|
||||
<span style="color: rgba(0, 128, 0, 1)">sylvestre</span>,
|
||||
<span style="color:rgba(75, 0, 130, 1)">ombre</span>
|
||||
</p>
|
||||
|
||||
<div class="class-grid">
|
||||
@@ -144,18 +159,28 @@ const especeData = personnages.reduce((acc, p) => {
|
||||
>
|
||||
<h3>{espece.data.title}</h3>
|
||||
<div class="bubble-container">
|
||||
{charactersInEspece.map((p) => (
|
||||
<a
|
||||
href={`/personnages/${p.id}`}
|
||||
class="notification-bubble bubble-class-border"
|
||||
style={`--p-color: ${p.colorEncre}`}
|
||||
>
|
||||
<span class="p-name">{p.nom}</span>
|
||||
<span class="p-lvl">
|
||||
Niv.{p.niveau}
|
||||
</span>
|
||||
</a>
|
||||
))}
|
||||
{charactersInEspece.map((p) => {
|
||||
// Construction du dégradé : si une seule couleur, on la double pour le gradient
|
||||
const gradient =
|
||||
p.colors.length > 1
|
||||
? `linear-gradient(to right, ${p.colors[0]}, ${p.colors[1]})`
|
||||
: p.colors[0];
|
||||
|
||||
return (
|
||||
<a
|
||||
href={`/personnages/${p.id}`}
|
||||
class="notification-bubble bubble-class-border"
|
||||
style={`--p-gradient: ${gradient}`}
|
||||
>
|
||||
<span class="p-name">
|
||||
{p.nom}
|
||||
</span>
|
||||
<span class="p-lvl">
|
||||
Niv.{p.niveau}
|
||||
</span>
|
||||
</a>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
<p>{espece.data.description}</p>
|
||||
<a
|
||||
@@ -258,7 +283,19 @@ const especeData = personnages.reduce((acc, p) => {
|
||||
box-shadow: inset 0 -2px 0 0 var(--p-color);
|
||||
}
|
||||
.bubble-class-border {
|
||||
border-top: 3px solid var(--p-color) !important;
|
||||
position: relative;
|
||||
border-top: none !important;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.bubble-class-border::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 4px; /* L'épaisseur de ta bordure haute */
|
||||
background: var(--p-gradient);
|
||||
}
|
||||
.p-lvl {
|
||||
font-size: 0.6rem;
|
||||
|
||||
@@ -50,7 +50,7 @@ const allTags = [
|
||||
margin: 3rem 0;
|
||||
}
|
||||
|
||||
.creation-button {
|
||||
a .creation-button {
|
||||
font-family: "Cinzel", serif;
|
||||
font-size: 1.2rem;
|
||||
background: #c89b3c;
|
||||
@@ -65,7 +65,7 @@ const allTags = [
|
||||
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.creation-button:hover {
|
||||
a .creation-button:hover {
|
||||
background: #a27c2c;
|
||||
}
|
||||
|
||||
|
||||
@@ -46,9 +46,9 @@ const classesLabel = p.data.classes_detail
|
||||
</div>
|
||||
|
||||
<h1>{p.data.nom}</h1>
|
||||
<h3>Niveau Global : {p.data.niveau_global}</h3>
|
||||
{p.data.titre && <p class="titre-honorifique">{p.data.titre}</p>}
|
||||
<p class="meta">{p.data.espece} • {classesLabel}</p>
|
||||
<h3>Niveau Global : {p.data.niveau_global}</h3>
|
||||
</header>
|
||||
|
||||
<div class="visual-and-stats">
|
||||
@@ -117,6 +117,16 @@ const classesLabel = p.data.classes_detail
|
||||
}
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<h3>Outils</h3>
|
||||
<div class="tags-row">
|
||||
{
|
||||
p.data.outils?.map((t) => (
|
||||
<span class="tag tool">{t}</span>
|
||||
))
|
||||
}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="story-divider"><span>Histoire</span></div>
|
||||
|
||||
@@ -1 +1 @@
|
||||
@import "tailwindcss";
|
||||
@import "tailwindcss";
|
||||
|
||||
Reference in New Issue
Block a user