Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5c5ef7b0e4 | |||
| 503ee9395a | |||
| 389517a774 | |||
| 9617005a5c | |||
| 73a3381d2a | |||
| fbfb265570 | |||
| eda9b77f46 | |||
| 64ab54daf3 | |||
| 0e1594773b | |||
| 7f5beb401e | |||
| a606d62904 | |||
| bc49286f91 | |||
| 1e252ff6f2 | |||
| d12a7debdf | |||
| 30d9e4e4df | |||
| 606b38e022 | |||
| 4d9fa45ab6 | |||
| 8a4e0ba0e4 | |||
| 93df69a43e | |||
| 6a5819b905 | |||
| 389d4b8008 | |||
| ce1ed17ce1 | |||
| ac4bcb4217 | |||
| 01861340ad | |||
| 6091d4bf58 | |||
| bc9f4d9867 | |||
| 2756d95ea5 |
@@ -0,0 +1,78 @@
|
||||
name: Release Creation
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: echo "💡 The ${{ gitea.repository }} repository will be cloned to the runner."
|
||||
|
||||
- uses: https://github.com/RouxAntoine/checkout@v3.5.4
|
||||
|
||||
# Get part of the tag after the `v`
|
||||
- name: Extract tag version number
|
||||
id: get_version
|
||||
uses: https://github.com/battila7/get-version-action@v2
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: https://github.com/actions/setup-node@v3
|
||||
with:
|
||||
node-version: "20"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
# Génération à la volée des compendiums (packs-src/ → packs/ LevelDB)
|
||||
- name: Compile compendium packs
|
||||
run: npm run pack:compile
|
||||
|
||||
# Compilation CSS (LESS → css/) et bundle JavaScript (src/ → dist/)
|
||||
- name: Build CSS and JavaScript
|
||||
run: npm run build
|
||||
|
||||
# Substitute the Manifest and Download URLs in the system.json
|
||||
- name: Substitute Manifest and Download Links For Versioned Ones
|
||||
id: sub_manifest_link_version
|
||||
uses: https://github.com/microsoft/variable-substitution@v1
|
||||
with:
|
||||
files: "system.json"
|
||||
env:
|
||||
version: ${{steps.get_version.outputs.version-without-v}}
|
||||
url: https://www.uberwald.me/gitea/${{gitea.repository}}
|
||||
manifest: https://www.uberwald.me/gitea/uberwald/fvtt-chroniques-de-l-etrange/releases/download/latest/system.json
|
||||
download: https://www.uberwald.me/gitea/uberwald/fvtt-chroniques-de-l-etrange/releases/download/${{github.event.release.tag_name}}/fvtt-chroniques-de-l-etrange.zip
|
||||
|
||||
# Create a zip file with all files required by the system
|
||||
- run: |
|
||||
apt update -y
|
||||
apt install -y zip
|
||||
|
||||
- run: zip -r ./fvtt-chroniques-de-l-etrange.zip system.json README.md CHANGELOG.md LICENSE.txt css/ fonts/ images/ lang/ packs/ src/ templates/
|
||||
|
||||
- name: Setup Go
|
||||
uses: https://github.com/actions/setup-go@v4
|
||||
with:
|
||||
go-version: ">=1.20.1"
|
||||
|
||||
- name: Upload release assets
|
||||
id: use-go-action
|
||||
uses: https://gitea.com/actions/release-action@main
|
||||
with:
|
||||
files: |-
|
||||
./fvtt-chroniques-de-l-etrange.zip
|
||||
system.json
|
||||
api_key: "${{secrets.ALLOW_PUSH_RELEASE}}"
|
||||
|
||||
- name: Publish to Foundry server
|
||||
uses: https://github.com/djlechuck/foundryvtt-publish-package-action@v1
|
||||
with:
|
||||
token: ${{ secrets.FOUNDRYVTT_RELEASE_TOKEN }}
|
||||
id: "fvtt-chroniques-de-l-etrange"
|
||||
version: ${{github.event.release.tag_name}}
|
||||
manifest: "https://www.uberwald.me/gitea/uberwald/fvtt-chroniques-de-l-etrange/releases/download/latest/system.json"
|
||||
notes: "https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-chroniques-de-l-etrange.zip"
|
||||
compatibility-minimum: "14"
|
||||
compatibility-verified: "14"
|
||||
@@ -5,8 +5,9 @@
|
||||
|
||||
# Node Modules
|
||||
node_modules/
|
||||
package-lock.json
|
||||
|
||||
chroniquesdeletrange.lock
|
||||
*.pdf
|
||||
*.github/
|
||||
regles.txt
|
||||
regles.txt
|
||||
|
||||
@@ -12,10 +12,11 @@ Vous pouvez retrouver le nom de leurs auteurs respectifs sur ce site.
|
||||
version 1.2 ou toute version ultérieure publiée par la Free Software Foundation,
|
||||
https://commons.wikimedia.org/wiki/File:Hong_Kong_18_Districts_Blank_Map.svg
|
||||
- 'loksyu_roue_d_initiative.jpg' est une création originale de 'Darkwin'.
|
||||
- L'organisation du reste des images provient du système produit par MysteryMan (merci à lui)
|
||||
- La version 14.02 contenait des icones produites par David R.D. 'Mystery Man From Outerspace' Bercovici (merci à lui)
|
||||
- Les versions suivantes contiennent des icones produites par LeRatierBretonnien
|
||||
|
||||
Code Author :
|
||||
- Developed by LeRatierBretonnien
|
||||
- Developed by LeRatierBretonnien / www.uberwald.me
|
||||
|
||||
Code LICENCE :
|
||||
C BY-NC-SA 4.0
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
# Les Chroniques de l'étrange pour FoundryVTT
|
||||
# Chroniques de l'étrange — Système FoundryVTT
|
||||
|
||||
Implémentation du JDR Les Chroniques de l'Etrange de Antre-Monde éditions.
|
||||
Système [Foundry VTT](https://foundryvtt.com) pour **Chroniques de l'Etrange**, le jeu de rôle d'[Antre Monde Éditions](https://antremonde.fr).
|
||||
|
||||
Copyright 2025-2026 Antre Monde Editions All rights reserved
|
||||
|
||||
Chroniques de l'ETrange is a game written by Romain d'Huissier and Cédric Lameire. The authors retain their moral rights to this work in both print and digital formats.
|
||||
|
||||
This system for FoundryVTT has been approved and authorized by Antre-Monde Edition.
|
||||
|
||||
Ce système s'inspire d'un système précédent "chroniquesdeletrange" développé par David R.D. 'Mystery Man From Outerspace' Bercovici et Christophe 'Kristov / Qaw' Laudon. Le code a été intégralément réécrit pour être compatible avec la version 14 de FoundryVTT, et pour intégrer les nouvelles mécaniques de jeu introduites dans la nouvelle édition de Chroniques de l'Etrange, et n'a donc aucun lien de code avec le système précédent.
|
||||
|
||||
---
|
||||
|
||||
@@ -177,6 +177,11 @@
|
||||
flex: 1 1 110px;
|
||||
max-width: 200px;
|
||||
}
|
||||
.cde-stat-cell--wide {
|
||||
flex: 1 1 100%;
|
||||
max-width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
.cde-stat-label {
|
||||
font-size: 10px;
|
||||
font-family: "Averia", sans-serif;
|
||||
@@ -205,6 +210,23 @@
|
||||
.cde-stat-cell input:focus {
|
||||
border-bottom-color: #00d4d4;
|
||||
}
|
||||
.cde-stat-cell textarea {
|
||||
width: 100%;
|
||||
background: transparent;
|
||||
border: 1px solid #1a2436;
|
||||
border-radius: 2px;
|
||||
color: #e2e8f4;
|
||||
font-size: 13px;
|
||||
font-family: inherit;
|
||||
padding: 4px 6px;
|
||||
outline: none;
|
||||
resize: vertical;
|
||||
transition: border-color 0.15s;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.cde-stat-cell textarea:focus {
|
||||
border-color: #ff3d5a;
|
||||
}
|
||||
.cde-stat-cell select {
|
||||
width: 100%;
|
||||
border: none;
|
||||
@@ -385,7 +407,6 @@ section.npc .cde-neon-tabs .item.active {
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
min-height: 100%;
|
||||
}
|
||||
.cde-tab-body .tab.active {
|
||||
display: flex;
|
||||
@@ -1254,6 +1275,12 @@ section.npc .cde-neon-tabs .item.active {
|
||||
width: auto;
|
||||
height: auto;
|
||||
opacity: 0.6;
|
||||
cursor: zoom-in;
|
||||
transition: opacity 0.2s ease, box-shadow 0.2s ease;
|
||||
}
|
||||
.cde-loksyu-standalone .cde-loksyu-visual-row .cde-lok-visual:hover {
|
||||
opacity: 0.9;
|
||||
box-shadow: 0 0 10px #263853;
|
||||
}
|
||||
.cde-loksyu-standalone .cde-lok-footer {
|
||||
display: flex;
|
||||
@@ -3080,6 +3107,12 @@ strong.ellipsis {
|
||||
max-height: 180px;
|
||||
opacity: 0.45;
|
||||
border-radius: 4px;
|
||||
cursor: zoom-in;
|
||||
transition: opacity 0.2s ease, box-shadow 0.2s ease;
|
||||
}
|
||||
.cde-nghang-diagram img:hover {
|
||||
opacity: 0.85;
|
||||
box-shadow: 0 0 12px #263853;
|
||||
}
|
||||
.img-die-sm {
|
||||
width: 27px !important;
|
||||
@@ -3800,3 +3833,626 @@ ol.item-list li.item .item-controls a.item-control:hover {
|
||||
color: #ff3d5a;
|
||||
text-shadow: 0 0 5px rgba(255, 61, 90, 0.4);
|
||||
}
|
||||
/* ============================================================
|
||||
ROUE D'INITIATIVE — CDEWheelApp
|
||||
============================================================ */
|
||||
.cde-wheel-app {
|
||||
color: #e2e8f4;
|
||||
background: #080c14;
|
||||
font-family: "Averia", "Averia Regular", sans-serif;
|
||||
}
|
||||
.cde-wheel-app .window-content {
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
/* Two-column layout: SVG wheel left, panel right */
|
||||
.cde-wheel-layout {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
min-height: 520px;
|
||||
}
|
||||
/* ---- Left: SVG wheel ---- */
|
||||
.cde-wheel-svg-container {
|
||||
flex: 0 0 480px;
|
||||
width: 480px;
|
||||
padding: 12px 12px 6px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: #0d1520;
|
||||
border-right: 1px solid #1a2436;
|
||||
}
|
||||
.cde-wheel-svg-container svg {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
max-width: 456px;
|
||||
max-height: 456px;
|
||||
overflow: visible;
|
||||
}
|
||||
.cde-wheel-svg-container .cde-wheel-legend {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 4px 0 2px;
|
||||
font-size: 11px;
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.cde-wheel-svg-container .cde-wheel-legend-dot {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 50%;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.cde-wheel-svg-container .cde-wheel-segment {
|
||||
stroke: #080c14;
|
||||
stroke-width: 1.5;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
.cde-wheel-svg-container .cde-wheel-cran-label {
|
||||
font-family: "Averia Regular", sans-serif;
|
||||
font-size: 12px;
|
||||
fill: rgba(255, 255, 255, 0.55);
|
||||
text-anchor: middle;
|
||||
dominant-baseline: central;
|
||||
pointer-events: none;
|
||||
user-select: none;
|
||||
}
|
||||
.cde-wheel-svg-container .cde-wheel-fighter-circle {
|
||||
stroke-width: 2;
|
||||
cursor: pointer;
|
||||
transition: r 0.2s, stroke-width 0.2s;
|
||||
}
|
||||
.cde-wheel-svg-container .cde-wheel-fighter-circle:hover {
|
||||
stroke-width: 3;
|
||||
}
|
||||
.cde-wheel-svg-container .cde-wheel-fighter-circle.is-active {
|
||||
r: 18;
|
||||
stroke-width: 3;
|
||||
filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.7));
|
||||
}
|
||||
.cde-wheel-svg-container .cde-wheel-fighter-circle.is-turn {
|
||||
stroke-dasharray: 3 2;
|
||||
animation: cde-spin 4s linear infinite;
|
||||
}
|
||||
.cde-wheel-svg-container .cde-wheel-fighter-initial {
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
fill: #fff;
|
||||
text-anchor: middle;
|
||||
dominant-baseline: central;
|
||||
pointer-events: none;
|
||||
}
|
||||
/* ---- Right: panel ---- */
|
||||
.cde-wheel-panel {
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
min-width: 0;
|
||||
}
|
||||
.cde-wheel-section-title {
|
||||
padding: 7px 12px 6px;
|
||||
border-bottom: 1px solid #1a2436;
|
||||
background: #0d1520;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.12em;
|
||||
color: #7d94b8;
|
||||
border-left: 3px solid #4a9eff;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.cde-wheel-section-title em {
|
||||
font-style: normal;
|
||||
color: #e2e8f4;
|
||||
text-transform: none;
|
||||
letter-spacing: 0;
|
||||
font-size: 11px;
|
||||
}
|
||||
/* Combatant list */
|
||||
.cde-wheel-combatants {
|
||||
flex: 0 0 auto;
|
||||
max-height: 130px;
|
||||
overflow-y: auto;
|
||||
border-bottom: 1px solid #1a2436;
|
||||
}
|
||||
.cde-wheel-combatant {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 6px 12px 6px 9px;
|
||||
cursor: pointer;
|
||||
border-bottom: 1px solid rgba(26, 36, 54, 0.5);
|
||||
border-left: 3px solid transparent;
|
||||
transition: background 0.15s, border-color 0.15s;
|
||||
}
|
||||
.cde-wheel-combatant:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.cde-wheel-combatant:hover {
|
||||
background: #101622;
|
||||
}
|
||||
.cde-wheel-combatant.cde-wheel-combatant--selected {
|
||||
background: rgba(74, 158, 255, 0.1);
|
||||
border-left-color: #4a9eff;
|
||||
}
|
||||
.cde-wheel-combatant.cde-wheel-combatant--selected .cde-wheel-combatant-name {
|
||||
color: #e2e8f4;
|
||||
font-weight: 600;
|
||||
}
|
||||
.cde-wheel-combatant.cde-wheel-combatant--active .cde-wheel-active-marker {
|
||||
color: #f0c040;
|
||||
filter: drop-shadow(0 0 3px #f0c040);
|
||||
}
|
||||
.cde-wheel-combatant-img {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
border: 1.5px solid #263853;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.cde-wheel-combatant-name {
|
||||
flex: 1 1 auto;
|
||||
font-size: 13px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
color: #7d94b8;
|
||||
}
|
||||
.cde-wheel-combatant-cran {
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
font-variant-numeric: tabular-nums;
|
||||
flex-shrink: 0;
|
||||
min-width: 22px;
|
||||
text-align: center;
|
||||
padding: 2px 6px;
|
||||
border-radius: 12px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
.cde-wheel-active-marker {
|
||||
font-size: 10px;
|
||||
color: #7d94b8;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
/* Action area */
|
||||
.cde-wheel-actions {
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow-y: auto;
|
||||
padding: 8px 10px 10px;
|
||||
gap: 6px;
|
||||
}
|
||||
.cde-wheel-actions.cde-wheel-actions--hint {
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.cde-wheel-hint {
|
||||
color: #7d94b8;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
font-style: italic;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
.cde-wheel-hint i {
|
||||
font-size: 22px;
|
||||
opacity: 0.4;
|
||||
}
|
||||
.cde-wheel-action-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 5px;
|
||||
}
|
||||
.cde-wheel-action-btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 4px;
|
||||
background: #101622;
|
||||
border: 1px solid #263853;
|
||||
border-radius: 5px;
|
||||
color: #7d94b8;
|
||||
font-size: 11px;
|
||||
padding: 5px 7px;
|
||||
cursor: pointer;
|
||||
text-align: left;
|
||||
transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s;
|
||||
font-family: inherit;
|
||||
}
|
||||
.cde-wheel-action-btn:hover {
|
||||
color: #e2e8f4;
|
||||
background: #1a2436;
|
||||
border-color: #263853;
|
||||
}
|
||||
.cde-wheel-action-btn .cde-wheel-action-name {
|
||||
flex: 1 1 auto;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.cde-wheel-action-btn .cde-wheel-action-cost {
|
||||
flex-shrink: 0;
|
||||
font-weight: 700;
|
||||
font-size: 10px;
|
||||
padding: 1px 5px;
|
||||
border-radius: 10px;
|
||||
background: #263853;
|
||||
color: #7d94b8;
|
||||
line-height: 1.4;
|
||||
}
|
||||
.cde-wheel-action-btn[data-cost="1"]:hover {
|
||||
box-shadow: 0 0 6px rgba(74, 158, 255, 0.22);
|
||||
}
|
||||
.cde-wheel-action-btn[data-cost="1"] .cde-wheel-action-cost {
|
||||
background: #1a3d6a;
|
||||
color: #6aadff;
|
||||
}
|
||||
.cde-wheel-action-btn[data-cost="2"]:hover {
|
||||
box-shadow: 0 0 6px rgba(212, 160, 80, 0.25);
|
||||
}
|
||||
.cde-wheel-action-btn[data-cost="2"] .cde-wheel-action-cost {
|
||||
background: #4a3200;
|
||||
color: #d4a050;
|
||||
}
|
||||
.cde-wheel-action-btn[data-cost="3"]:hover {
|
||||
box-shadow: 0 0 6px rgba(224, 96, 48, 0.28);
|
||||
}
|
||||
.cde-wheel-action-btn[data-cost="3"] .cde-wheel-action-cost {
|
||||
background: #4a1800;
|
||||
color: #e07840;
|
||||
}
|
||||
.cde-wheel-action-btn[data-cost="6"] {
|
||||
border-color: rgba(204, 32, 64, 0.4);
|
||||
}
|
||||
.cde-wheel-action-btn[data-cost="6"]:hover {
|
||||
box-shadow: 0 0 6px rgba(204, 32, 64, 0.35);
|
||||
}
|
||||
.cde-wheel-action-btn[data-cost="6"] .cde-wheel-action-cost {
|
||||
background: #4a0814;
|
||||
color: #e03050;
|
||||
}
|
||||
/* Special action buttons */
|
||||
.cde-wheel-special-actions {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
.cde-wheel-btn-roll,
|
||||
.cde-wheel-btn-surprise {
|
||||
flex: 1 1 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 6px;
|
||||
border-radius: 5px;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
padding: 7px 8px;
|
||||
cursor: pointer;
|
||||
font-family: inherit;
|
||||
transition: background 0.15s, box-shadow 0.15s;
|
||||
border: 1px solid;
|
||||
}
|
||||
.cde-wheel-btn-roll {
|
||||
background: rgba(192, 138, 0, 0.14);
|
||||
border-color: rgba(192, 138, 0, 0.5);
|
||||
color: #e0b030;
|
||||
}
|
||||
.cde-wheel-btn-roll:hover {
|
||||
background: rgba(192, 138, 0, 0.26);
|
||||
box-shadow: 0 0 8px rgba(192, 138, 0, 0.4);
|
||||
}
|
||||
.cde-wheel-btn-surprise {
|
||||
background: rgba(255, 61, 90, 0.12);
|
||||
border-color: rgba(255, 61, 90, 0.45);
|
||||
color: #ff3d5a;
|
||||
}
|
||||
.cde-wheel-btn-surprise:hover {
|
||||
background: rgba(255, 61, 90, 0.24);
|
||||
box-shadow: 0 0 8px rgba(255, 61, 90, 0.35);
|
||||
}
|
||||
/* No-combat empty state */
|
||||
.cde-wheel-no-combat {
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #7d94b8;
|
||||
gap: 8px;
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
}
|
||||
.cde-wheel-no-combat i {
|
||||
font-size: 28px;
|
||||
opacity: 0.4;
|
||||
}
|
||||
/* Spin animation for active-turn token */
|
||||
@keyframes cde-spin {
|
||||
from {
|
||||
transform-origin: var(--fx) var(--fy);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform-origin: var(--fx) var(--fy);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
/* ===================================================================
|
||||
Migration App
|
||||
=================================================================== */
|
||||
.cde-migration-app .window-content {
|
||||
padding: 0;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.cde-migration-body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
padding: 16px;
|
||||
}
|
||||
/* Drop zone */
|
||||
.cde-migration-drop-zone {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 28px 20px;
|
||||
border: 2px dashed #1a2436;
|
||||
border-radius: 8px;
|
||||
background: rgba(13, 21, 32, 0.6);
|
||||
text-align: center;
|
||||
transition: border-color 0.15s, background 0.15s;
|
||||
cursor: pointer;
|
||||
}
|
||||
.cde-migration-drop-zone.is-dragover {
|
||||
border-color: #4a9eff;
|
||||
background: rgba(74, 158, 255, 0.15);
|
||||
}
|
||||
.cde-migration-drop-icon {
|
||||
font-size: 36px;
|
||||
color: #4a9eff;
|
||||
opacity: 0.7;
|
||||
}
|
||||
.cde-migration-drop-hint {
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
color: #7d94b8;
|
||||
}
|
||||
.cde-migration-file-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 6px 14px;
|
||||
border: 1px solid #4a9eff;
|
||||
border-radius: 4px;
|
||||
color: #4a9eff;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: background 0.15s;
|
||||
}
|
||||
.cde-migration-file-btn:hover {
|
||||
background: rgba(74, 158, 255, 0.2);
|
||||
}
|
||||
/* Preview section */
|
||||
.cde-migration-preview {
|
||||
border: 1px solid #1a2436;
|
||||
border-radius: 6px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.cde-migration-preview-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 8px 12px;
|
||||
background: rgba(13, 21, 32, 0.8);
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
color: #7d94b8;
|
||||
}
|
||||
.cde-migration-clear-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
padding: 2px 8px;
|
||||
border: 1px solid #1a2436;
|
||||
border-radius: 4px;
|
||||
font-size: 11px;
|
||||
color: #7d94b8;
|
||||
background: none;
|
||||
cursor: pointer;
|
||||
transition: color 0.15s, border-color 0.15s;
|
||||
}
|
||||
.cde-migration-clear-btn:hover {
|
||||
color: #e04444;
|
||||
border-color: #e04444;
|
||||
}
|
||||
/* Preview table */
|
||||
.cde-migration-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 12px;
|
||||
}
|
||||
.cde-migration-table th {
|
||||
padding: 5px 8px;
|
||||
background: rgba(13, 21, 32, 0.9);
|
||||
color: #7d94b8;
|
||||
font-size: 10px;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid #1a2436;
|
||||
}
|
||||
.cde-migration-table td {
|
||||
padding: 5px 8px;
|
||||
border-bottom: 1px solid rgba(26, 36, 54, 0.4);
|
||||
vertical-align: middle;
|
||||
}
|
||||
.cde-migration-table tr:last-child td {
|
||||
border-bottom: none;
|
||||
}
|
||||
.cde-migration-thumb {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border-radius: 3px;
|
||||
object-fit: cover;
|
||||
}
|
||||
.cde-migration-name {
|
||||
font-weight: 600;
|
||||
color: #e2e8f4;
|
||||
}
|
||||
.cde-migration-items-count {
|
||||
text-align: center;
|
||||
color: #7d94b8;
|
||||
}
|
||||
.cde-migration-srcfile {
|
||||
font-size: 10px;
|
||||
color: #7d94b8;
|
||||
max-width: 130px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
/* Type badge */
|
||||
.cde-migration-type-badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
padding: 2px 8px;
|
||||
border-radius: 10px;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.cde-migration-type-badge.cde-migration-type-character {
|
||||
background: rgba(74, 158, 255, 0.2);
|
||||
color: #4a9eff;
|
||||
border: 1px solid rgba(74, 158, 255, 0.4);
|
||||
}
|
||||
.cde-migration-type-badge.cde-migration-type-npc {
|
||||
background: rgba(156, 77, 204, 0.2);
|
||||
color: #c97ae0;
|
||||
border: 1px solid rgba(156, 77, 204, 0.4);
|
||||
}
|
||||
/* Errors */
|
||||
.cde-migration-errors {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
}
|
||||
.cde-migration-errors li {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 6px;
|
||||
padding: 6px 10px;
|
||||
border: 1px solid rgba(224, 68, 68, 0.6);
|
||||
border-radius: 4px;
|
||||
background: rgba(224, 68, 68, 0.1);
|
||||
color: #e07070;
|
||||
font-size: 11px;
|
||||
}
|
||||
.cde-migration-errors li i {
|
||||
margin-top: 2px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
/* Bottom action bar */
|
||||
.cde-migration-actions {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding-top: 4px;
|
||||
}
|
||||
.cde-migration-import-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 9px 24px;
|
||||
border: none;
|
||||
border-radius: 6px;
|
||||
background: #4a9eff;
|
||||
color: #fff;
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
transition: filter 0.15s;
|
||||
}
|
||||
.cde-migration-import-btn:hover {
|
||||
filter: brightness(1.15);
|
||||
}
|
||||
.cde-migration-hint {
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
color: #7d94b8;
|
||||
text-align: center;
|
||||
}
|
||||
.cde-welcome-message {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 12px 16px;
|
||||
background: #101622;
|
||||
border: 1px solid #263853;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
.cde-welcome-logo {
|
||||
width: 120px;
|
||||
height: auto;
|
||||
object-fit: contain;
|
||||
filter: drop-shadow(0 0 8px rgba(74, 158, 255, 0.4));
|
||||
}
|
||||
.cde-welcome-title {
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
font-weight: 700;
|
||||
color: #4a9eff;
|
||||
text-shadow: 0 0 8px rgba(74, 158, 255, 0.5);
|
||||
}
|
||||
.cde-welcome-links {
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
color: #7d94b8;
|
||||
}
|
||||
.cde-welcome-links a {
|
||||
color: #00d4d4;
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid rgba(0, 212, 212, 0.4);
|
||||
}
|
||||
.cde-welcome-links a:hover {
|
||||
color: #fff;
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
.cde-welcome-help-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
margin-top: 4px;
|
||||
padding: 7px 18px;
|
||||
background: #4a9eff;
|
||||
border: none;
|
||||
border-radius: 6px;
|
||||
color: #fff;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
transition: filter 0.15s;
|
||||
}
|
||||
.cde-welcome-help-btn:hover {
|
||||
filter: brightness(1.2);
|
||||
}
|
||||
|
||||
@@ -208,6 +208,12 @@
|
||||
min-width: 110px;
|
||||
flex: 1 1 110px;
|
||||
max-width: 200px;
|
||||
|
||||
&--wide {
|
||||
flex: 1 1 100%;
|
||||
max-width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.cde-stat-label {
|
||||
@@ -240,6 +246,23 @@
|
||||
&:focus { border-bottom-color: @cde-item; }
|
||||
}
|
||||
|
||||
.cde-stat-cell textarea {
|
||||
width: 100%;
|
||||
background: transparent;
|
||||
border: 1px solid @cde-border;
|
||||
border-radius: 2px;
|
||||
color: @cde-text;
|
||||
font-size: 13px;
|
||||
font-family: inherit;
|
||||
padding: 4px 6px;
|
||||
outline: none;
|
||||
resize: vertical;
|
||||
transition: border-color 0.15s;
|
||||
line-height: 1.5;
|
||||
|
||||
&:focus { border-color: @cde-kungfu; }
|
||||
}
|
||||
|
||||
.cde-stat-cell select {
|
||||
width: 100%;
|
||||
border: none;
|
||||
@@ -369,7 +392,6 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
gap: @cde-gap;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
.tab.active {
|
||||
@@ -1289,6 +1311,13 @@ section.npc .cde-neon-tabs .item.active { color: @cde-supernatural; borde
|
||||
width: auto;
|
||||
height: auto;
|
||||
opacity: 0.6;
|
||||
cursor: zoom-in;
|
||||
transition: opacity 0.2s ease, box-shadow 0.2s ease;
|
||||
|
||||
&:hover {
|
||||
opacity: 0.9;
|
||||
box-shadow: 0 0 10px @cde-border-hi;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3131,6 +3160,13 @@ strong.ellipsis {
|
||||
max-height: 180px;
|
||||
opacity: 0.45;
|
||||
border-radius: 4px;
|
||||
cursor: zoom-in;
|
||||
transition: opacity 0.2s ease, box-shadow 0.2s ease;
|
||||
|
||||
&:hover {
|
||||
opacity: 0.85;
|
||||
box-shadow: 0 0 12px @cde-border-hi;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3915,3 +3951,706 @@ ol.item-list {
|
||||
text-shadow: 0 0 5px fade(@cde-kungfu, 40%);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ============================================================
|
||||
ROUE D'INITIATIVE — CDEWheelApp
|
||||
============================================================ */
|
||||
|
||||
// Wu Xing segment colours (match JS constants)
|
||||
@wu-metal: #b8c4cc;
|
||||
@wu-water: #3a7bd5;
|
||||
@wu-earth: #c8a84b;
|
||||
@wu-fire: #d94f3d;
|
||||
@wu-wood: #4a9b5a;
|
||||
@wu-reference: #2c1f6b;
|
||||
|
||||
.cde-wheel-app {
|
||||
color: @cde-text;
|
||||
background: @cde-bg;
|
||||
font-family: "Averia", "Averia Regular", sans-serif;
|
||||
|
||||
.window-content {
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
/* Two-column layout: SVG wheel left, panel right */
|
||||
.cde-wheel-layout {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
min-height: 520px;
|
||||
}
|
||||
|
||||
/* ---- Left: SVG wheel ---- */
|
||||
.cde-wheel-svg-container {
|
||||
flex: 0 0 480px;
|
||||
width: 480px;
|
||||
padding: 12px 12px 6px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: @cde-surface2;
|
||||
border-right: 1px solid @cde-border;
|
||||
|
||||
svg {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
max-width: 456px;
|
||||
max-height: 456px;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.cde-wheel-legend {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 4px 0 2px;
|
||||
font-size: 11px;
|
||||
color: rgba(255,255,255,0.55);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.cde-wheel-legend-dot {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 50%;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.cde-wheel-segment {
|
||||
stroke: @cde-bg;
|
||||
stroke-width: 1.5;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
|
||||
.cde-wheel-cran-label {
|
||||
font-family: "Averia Regular", sans-serif;
|
||||
font-size: 12px;
|
||||
fill: rgba(255,255,255,0.55);
|
||||
text-anchor: middle;
|
||||
dominant-baseline: central;
|
||||
pointer-events: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
// Combatant token circle on the wheel
|
||||
.cde-wheel-fighter-circle {
|
||||
stroke-width: 2;
|
||||
cursor: pointer;
|
||||
transition: r 0.2s, stroke-width 0.2s;
|
||||
|
||||
&:hover {
|
||||
stroke-width: 3;
|
||||
}
|
||||
|
||||
&.is-active {
|
||||
r: 18;
|
||||
stroke-width: 3;
|
||||
filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.7));
|
||||
}
|
||||
|
||||
&.is-turn {
|
||||
stroke-dasharray: 3 2;
|
||||
animation: cde-spin 4s linear infinite;
|
||||
}
|
||||
}
|
||||
|
||||
.cde-wheel-fighter-initial {
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
fill: #fff;
|
||||
text-anchor: middle;
|
||||
dominant-baseline: central;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* ---- Right: panel ---- */
|
||||
.cde-wheel-panel {
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.cde-wheel-section-title {
|
||||
padding: 7px 12px 6px;
|
||||
border-bottom: 1px solid @cde-border;
|
||||
background: @cde-surface2;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.12em;
|
||||
color: @cde-muted;
|
||||
border-left: 3px solid @cde-spell;
|
||||
flex-shrink: 0;
|
||||
|
||||
em {
|
||||
font-style: normal;
|
||||
color: @cde-text;
|
||||
text-transform: none;
|
||||
letter-spacing: 0;
|
||||
font-size: 11px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Combatant list */
|
||||
.cde-wheel-combatants {
|
||||
flex: 0 0 auto;
|
||||
max-height: 130px;
|
||||
overflow-y: auto;
|
||||
border-bottom: 1px solid @cde-border;
|
||||
}
|
||||
|
||||
.cde-wheel-combatant {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 6px 12px 6px 9px;
|
||||
cursor: pointer;
|
||||
border-bottom: 1px solid fade(@cde-border, 50%);
|
||||
border-left: 3px solid transparent;
|
||||
transition: background 0.15s, border-color 0.15s;
|
||||
|
||||
&:last-child { border-bottom: none; }
|
||||
|
||||
&:hover {
|
||||
background: @cde-surface;
|
||||
}
|
||||
|
||||
&.cde-wheel-combatant--selected {
|
||||
background: fade(@cde-spell, 10%);
|
||||
border-left-color: @cde-spell;
|
||||
|
||||
.cde-wheel-combatant-name {
|
||||
color: @cde-text;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
&.cde-wheel-combatant--active {
|
||||
.cde-wheel-active-marker {
|
||||
color: #f0c040;
|
||||
filter: drop-shadow(0 0 3px #f0c040);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cde-wheel-combatant-img {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
border: 1.5px solid @cde-border-hi;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.cde-wheel-combatant-name {
|
||||
flex: 1 1 auto;
|
||||
font-size: 13px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
color: @cde-muted;
|
||||
}
|
||||
|
||||
.cde-wheel-combatant-cran {
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
font-variant-numeric: tabular-nums;
|
||||
flex-shrink: 0;
|
||||
min-width: 22px;
|
||||
text-align: center;
|
||||
padding: 2px 6px;
|
||||
border-radius: 12px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.cde-wheel-active-marker {
|
||||
font-size: 10px;
|
||||
color: @cde-muted;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
/* Action area */
|
||||
.cde-wheel-actions {
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow-y: auto;
|
||||
padding: 8px 10px 10px;
|
||||
gap: 6px;
|
||||
|
||||
&.cde-wheel-actions--hint {
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.cde-wheel-hint {
|
||||
color: @cde-muted;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
font-style: italic;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
|
||||
i {
|
||||
font-size: 22px;
|
||||
opacity: 0.4;
|
||||
}
|
||||
}
|
||||
|
||||
.cde-wheel-action-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
.cde-wheel-action-btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 4px;
|
||||
background: @cde-surface;
|
||||
border: 1px solid @cde-border-hi;
|
||||
border-radius: @cde-radius-sm;
|
||||
color: @cde-muted;
|
||||
font-size: 11px;
|
||||
padding: 5px 7px;
|
||||
cursor: pointer;
|
||||
text-align: left;
|
||||
transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s;
|
||||
font-family: inherit;
|
||||
|
||||
&:hover {
|
||||
color: @cde-text;
|
||||
background: @cde-border;
|
||||
border-color: @cde-border-hi;
|
||||
}
|
||||
|
||||
.cde-wheel-action-name {
|
||||
flex: 1 1 auto;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.cde-wheel-action-cost {
|
||||
flex-shrink: 0;
|
||||
font-weight: 700;
|
||||
font-size: 10px;
|
||||
padding: 1px 5px;
|
||||
border-radius: 10px;
|
||||
background: @cde-border-hi;
|
||||
color: @cde-muted;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
&[data-cost="1"] {
|
||||
&:hover { box-shadow: 0 0 6px fade(@cde-spell, 22%); }
|
||||
.cde-wheel-action-cost { background: #1a3d6a; color: #6aadff; }
|
||||
}
|
||||
&[data-cost="2"] {
|
||||
&:hover { box-shadow: 0 0 6px fade(#d4a050, 25%); }
|
||||
.cde-wheel-action-cost { background: #4a3200; color: #d4a050; }
|
||||
}
|
||||
&[data-cost="3"] {
|
||||
&:hover { box-shadow: 0 0 6px fade(#e06030, 28%); }
|
||||
.cde-wheel-action-cost { background: #4a1800; color: #e07840; }
|
||||
}
|
||||
&[data-cost="6"] {
|
||||
border-color: fade(#cc2040, 40%);
|
||||
&:hover { box-shadow: 0 0 6px fade(#cc2040, 35%); }
|
||||
.cde-wheel-action-cost { background: #4a0814; color: #e03050; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Special action buttons */
|
||||
.cde-wheel-special-actions {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.cde-wheel-btn-roll,
|
||||
.cde-wheel-btn-surprise {
|
||||
flex: 1 1 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 6px;
|
||||
border-radius: @cde-radius-sm;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
padding: 7px 8px;
|
||||
cursor: pointer;
|
||||
font-family: inherit;
|
||||
transition: background 0.15s, box-shadow 0.15s;
|
||||
border: 1px solid;
|
||||
}
|
||||
|
||||
.cde-wheel-btn-roll {
|
||||
background: fade(#c08a00, 14%);
|
||||
border-color: fade(#c08a00, 50%);
|
||||
color: #e0b030;
|
||||
|
||||
&:hover {
|
||||
background: fade(#c08a00, 26%);
|
||||
box-shadow: 0 0 8px fade(#c08a00, 40%);
|
||||
}
|
||||
}
|
||||
|
||||
.cde-wheel-btn-surprise {
|
||||
background: fade(@cde-kungfu, 12%);
|
||||
border-color: fade(@cde-kungfu, 45%);
|
||||
color: @cde-kungfu;
|
||||
|
||||
&:hover {
|
||||
background: fade(@cde-kungfu, 24%);
|
||||
box-shadow: 0 0 8px fade(@cde-kungfu, 35%);
|
||||
}
|
||||
}
|
||||
|
||||
/* No-combat empty state */
|
||||
.cde-wheel-no-combat {
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: @cde-muted;
|
||||
gap: 8px;
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
|
||||
i {
|
||||
font-size: 28px;
|
||||
opacity: 0.4;
|
||||
}
|
||||
}
|
||||
|
||||
/* Spin animation for active-turn token */
|
||||
@keyframes cde-spin {
|
||||
from { transform-origin: var(--fx) var(--fy); transform: rotate(0deg); }
|
||||
to { transform-origin: var(--fx) var(--fy); transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
/* ===================================================================
|
||||
Migration App
|
||||
=================================================================== */
|
||||
|
||||
.cde-migration-app {
|
||||
.window-content {
|
||||
padding: 0;
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.cde-migration-body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
/* Drop zone */
|
||||
.cde-migration-drop-zone {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 28px 20px;
|
||||
border: 2px dashed @cde-border;
|
||||
border-radius: 8px;
|
||||
background: fadeout(@cde-surface2, 40%);
|
||||
text-align: center;
|
||||
transition: border-color 0.15s, background 0.15s;
|
||||
cursor: pointer;
|
||||
|
||||
&.is-dragover {
|
||||
border-color: @cde-spell;
|
||||
background: fadeout(@cde-spell, 85%);
|
||||
}
|
||||
}
|
||||
|
||||
.cde-migration-drop-icon {
|
||||
font-size: 36px;
|
||||
color: @cde-spell;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.cde-migration-drop-hint {
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
color: @cde-muted;
|
||||
}
|
||||
|
||||
.cde-migration-file-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 6px 14px;
|
||||
border: 1px solid @cde-spell;
|
||||
border-radius: 4px;
|
||||
color: @cde-spell;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: background 0.15s;
|
||||
|
||||
&:hover {
|
||||
background: fadeout(@cde-spell, 80%);
|
||||
}
|
||||
}
|
||||
|
||||
/* Preview section */
|
||||
.cde-migration-preview {
|
||||
border: 1px solid @cde-border;
|
||||
border-radius: 6px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.cde-migration-preview-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 8px 12px;
|
||||
background: fadeout(@cde-surface2, 20%);
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
color: @cde-muted;
|
||||
}
|
||||
|
||||
.cde-migration-clear-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
padding: 2px 8px;
|
||||
border: 1px solid @cde-border;
|
||||
border-radius: 4px;
|
||||
font-size: 11px;
|
||||
color: @cde-muted;
|
||||
background: none;
|
||||
cursor: pointer;
|
||||
transition: color 0.15s, border-color 0.15s;
|
||||
|
||||
&:hover {
|
||||
color: #e04444;
|
||||
border-color: #e04444;
|
||||
}
|
||||
}
|
||||
|
||||
/* Preview table */
|
||||
.cde-migration-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 12px;
|
||||
|
||||
th {
|
||||
padding: 5px 8px;
|
||||
background: fadeout(@cde-surface2, 10%);
|
||||
color: @cde-muted;
|
||||
font-size: 10px;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid @cde-border;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 5px 8px;
|
||||
border-bottom: 1px solid fadeout(@cde-border, 60%);
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
tr:last-child td {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
.cde-migration-thumb {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border-radius: 3px;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.cde-migration-name {
|
||||
font-weight: 600;
|
||||
color: @cde-text;
|
||||
}
|
||||
|
||||
.cde-migration-items-count {
|
||||
text-align: center;
|
||||
color: @cde-muted;
|
||||
}
|
||||
|
||||
.cde-migration-srcfile {
|
||||
font-size: 10px;
|
||||
color: @cde-muted;
|
||||
max-width: 130px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* Type badge */
|
||||
.cde-migration-type-badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
padding: 2px 8px;
|
||||
border-radius: 10px;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
|
||||
&.cde-migration-type-character {
|
||||
background: fadeout(@cde-spell, 80%);
|
||||
color: @cde-spell;
|
||||
border: 1px solid fadeout(@cde-spell, 60%);
|
||||
}
|
||||
|
||||
&.cde-migration-type-npc {
|
||||
background: fadeout(#9c4dcc, 80%);
|
||||
color: #c97ae0;
|
||||
border: 1px solid fadeout(#9c4dcc, 60%);
|
||||
}
|
||||
}
|
||||
|
||||
/* Errors */
|
||||
.cde-migration-errors {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
|
||||
li {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 6px;
|
||||
padding: 6px 10px;
|
||||
border: 1px solid fadeout(#e04444, 40%);
|
||||
border-radius: 4px;
|
||||
background: fadeout(#e04444, 90%);
|
||||
color: #e07070;
|
||||
font-size: 11px;
|
||||
|
||||
i { margin-top: 2px; flex-shrink: 0; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Bottom action bar */
|
||||
.cde-migration-actions {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding-top: 4px;
|
||||
}
|
||||
|
||||
.cde-migration-import-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 9px 24px;
|
||||
border: none;
|
||||
border-radius: 6px;
|
||||
background: @cde-spell;
|
||||
color: #fff;
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
transition: filter 0.15s;
|
||||
|
||||
&:hover {
|
||||
filter: brightness(1.15);
|
||||
}
|
||||
}
|
||||
|
||||
.cde-migration-hint {
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
color: @cde-muted;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Welcome message
|
||||
// ============================================================
|
||||
|
||||
.cde-welcome-message {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 12px 16px;
|
||||
background: @cde-surface;
|
||||
border: 1px solid @cde-border-hi;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cde-welcome-logo {
|
||||
width: 120px;
|
||||
height: auto;
|
||||
object-fit: contain;
|
||||
filter: drop-shadow(0 0 8px fade(@cde-spell, 40%));
|
||||
}
|
||||
|
||||
.cde-welcome-title {
|
||||
margin: 0;
|
||||
font-size: 15px;
|
||||
font-weight: 700;
|
||||
color: @cde-spell;
|
||||
text-shadow: 0 0 8px fade(@cde-spell, 50%);
|
||||
}
|
||||
|
||||
.cde-welcome-links {
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
color: @cde-muted;
|
||||
|
||||
a {
|
||||
color: @cde-item;
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid fade(@cde-item, 40%);
|
||||
|
||||
&:hover {
|
||||
color: #fff;
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cde-welcome-help-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
margin-top: 4px;
|
||||
padding: 7px 18px;
|
||||
background: @cde-spell;
|
||||
border: none;
|
||||
border-radius: 6px;
|
||||
color: #fff;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
transition: filter 0.15s;
|
||||
|
||||
&:hover {
|
||||
filter: brightness(1.2);
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 134 B |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 64 KiB |
@@ -0,0 +1,30 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="ar-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#00e5ff" stop-opacity="0.35"/>
|
||||
<stop offset="100%" stop-color="#00e5ff" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#ar-glow)"/>
|
||||
<!-- Plastron style écaille de dragon — rangées d'écailles imbriquées -->
|
||||
<!-- Rangée 1 -->
|
||||
<path d="M42 24 Q50 18 58 24 Q50 32 42 24Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||
<!-- Rangée 2 -->
|
||||
<path d="M30 36 Q38 28 46 36 Q38 44 30 36Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||
<path d="M54 36 Q62 28 70 36 Q62 44 54 36Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||
<!-- Rangée 3 -->
|
||||
<path d="M22 50 Q30 42 38 50 Q30 58 22 50Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||
<path d="M42 50 Q50 42 58 50 Q50 58 42 50Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||
<path d="M62 50 Q70 42 78 50 Q70 58 62 50Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||
<!-- Rangée 4 -->
|
||||
<path d="M30 64 Q38 56 46 64 Q38 72 30 64Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||
<path d="M54 64 Q62 56 70 64 Q62 72 54 64Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||
<!-- Rangée 5 -->
|
||||
<path d="M42 77 Q50 70 58 77 Q50 84 42 77Z" fill="#00e5ff" fill-opacity="0.22" stroke="#00e5ff" stroke-width="1.6"/>
|
||||
<!-- Reflets -->
|
||||
<circle cx="50" cy="24" r="1.5" fill="#00e5ff" opacity="0.9"/>
|
||||
<circle cx="38" cy="36" r="1.5" fill="#00e5ff" opacity="0.9"/>
|
||||
<circle cx="62" cy="36" r="1.5" fill="#00e5ff" opacity="0.9"/>
|
||||
<circle cx="50" cy="50" r="1.5" fill="#00e5ff" opacity="0.9"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,26 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="ig-glow" cx="50%" cy="60%" r="50%">
|
||||
<stop offset="0%" stop-color="#39ff14" stop-opacity="0.35"/>
|
||||
<stop offset="100%" stop-color="#39ff14" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#ig-glow)"/>
|
||||
<!-- Mortier de pharmacopée chinoise -->
|
||||
<path d="M28 62 Q28 76 50 76 Q72 76 72 62 L68 48 Q68 44 50 44 Q32 44 32 48 Z"
|
||||
fill="#39ff14" fill-opacity="0.15" stroke="#39ff14" stroke-width="2"/>
|
||||
<!-- Pilon -->
|
||||
<line x1="50" y1="22" x2="50" y2="54" stroke="#39ff14" stroke-width="3" stroke-linecap="round"/>
|
||||
<ellipse cx="50" cy="54" rx="7" ry="4" fill="#39ff14" fill-opacity="0.3" stroke="#39ff14" stroke-width="1.8"/>
|
||||
<!-- Vapeur montante -->
|
||||
<path d="M38 42 Q34 36 38 30 Q42 24 38 18" fill="none" stroke="#39ff14" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||
<path d="M50 40 Q46 34 50 28 Q54 22 50 16" fill="none" stroke="#39ff14" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||
<path d="M62 42 Q58 36 62 30 Q66 24 62 18" fill="none" stroke="#39ff14" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||
<!-- Petits cristaux/herbes dans le mortier -->
|
||||
<circle cx="44" cy="58" r="2" fill="#39ff14" opacity="0.7"/>
|
||||
<circle cx="52" cy="60" r="1.5" fill="#39ff14" opacity="0.7"/>
|
||||
<circle cx="59" cy="57" r="2" fill="#39ff14" opacity="0.7"/>
|
||||
<!-- Bande décorative -->
|
||||
<path d="M32 48 Q50 52 68 48" fill="none" stroke="#39ff14" stroke-width="1" opacity="0.5"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,27 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="it-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#ffd700" stop-opacity="0.4"/>
|
||||
<stop offset="100%" stop-color="#ffd700" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#it-glow)"/>
|
||||
<!-- Disque de jade bi (圓璧) — cercle avec trou central -->
|
||||
<circle cx="50" cy="50" r="32" fill="#ffd700" fill-opacity="0.12" stroke="#ffd700" stroke-width="2.5"/>
|
||||
<circle cx="50" cy="50" r="22" fill="#101622" stroke="#ffd700" stroke-width="1.5"/>
|
||||
<circle cx="50" cy="50" r="14" fill="#ffd700" fill-opacity="0.08" stroke="#ffd700" stroke-width="1" opacity="0.6"/>
|
||||
<!-- Motifs décoratifs — 8 trigrammes stylisés sur le pourtour -->
|
||||
<circle cx="50" cy="50" r="27" fill="none" stroke="#ffd700" stroke-width="0.8" stroke-dasharray="3 4.2" opacity="0.5"/>
|
||||
<!-- Encoches décoratives aux 8 directions -->
|
||||
<line x1="50" y1="18" x2="50" y2="23" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="50" y1="77" x2="50" y2="82" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="18" y1="50" x2="23" y2="50" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="77" y1="50" x2="82" y2="50" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="27.6" y1="27.6" x2="31.1" y2="31.1" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="68.9" y1="68.9" x2="72.4" y2="72.4" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="72.4" y1="27.6" x2="68.9" y2="31.1" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="27.6" y1="72.4" x2="31.1" y2="68.9" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<!-- Reflet jade -->
|
||||
<path d="M36 30 Q42 28 46 32" fill="none" stroke="#ffd700" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,29 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="kf-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#ff2244" stop-opacity="0.4"/>
|
||||
<stop offset="100%" stop-color="#ff2244" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#kf-glow)"/>
|
||||
<!-- Silhouette grue — posture sur une jambe, ailes déployées -->
|
||||
<!-- Tête -->
|
||||
<circle cx="50" cy="18" r="5" fill="#ff2244" fill-opacity="0.2" stroke="#ff2244" stroke-width="2"/>
|
||||
<!-- Corps -->
|
||||
<line x1="50" y1="23" x2="50" y2="52" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<!-- Bras gauche déployé vers le haut -->
|
||||
<path d="M50 33 Q38 26 24 28" fill="none" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<!-- Bras droit vers le bas en attaque -->
|
||||
<path d="M50 33 Q62 36 72 30" fill="none" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<!-- Jambe d'appui -->
|
||||
<line x1="50" y1="52" x2="50" y2="78" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M50 78 Q45 82 40 80" fill="none" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<!-- Jambe levée -->
|
||||
<path d="M50 52 Q60 58 66 52 Q70 46 72 50" fill="none" stroke="#ff2244" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<!-- Énergie chi — spirales autour du personnage -->
|
||||
<path d="M20 45 Q18 38 24 34 Q30 30 28 24" fill="none" stroke="#ff2244" stroke-width="1.2" stroke-linecap="round" opacity="0.5"/>
|
||||
<path d="M78 40 Q82 46 78 52 Q74 58 78 64" fill="none" stroke="#ff2244" stroke-width="1.2" stroke-linecap="round" opacity="0.5"/>
|
||||
<circle cx="24" cy="28" r="2" fill="#ff2244" opacity="0.8"/>
|
||||
<circle cx="72" cy="30" r="2" fill="#ff2244" opacity="0.8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,34 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="dm-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#cc0000" stop-opacity="0.45"/>
|
||||
<stop offset="100%" stop-color="#cc0000" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#dm-glow)"/>
|
||||
<!-- Masque d'opéra cantonais — démon -->
|
||||
<!-- Visage -->
|
||||
<ellipse cx="50" cy="50" rx="26" ry="30" fill="#cc0000" fill-opacity="0.18" stroke="#cc0000" stroke-width="2"/>
|
||||
<!-- Motif front — marques tribales -->
|
||||
<path d="M36 36 Q42 30 50 32 Q58 30 64 36" fill="none" stroke="#cc0000" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="50" y1="22" x2="50" y2="32" stroke="#cc0000" stroke-width="2" stroke-linecap="round"/>
|
||||
<!-- Cornes -->
|
||||
<path d="M36 28 Q30 16 26 12" fill="none" stroke="#cc0000" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<path d="M64 28 Q70 16 74 12" fill="none" stroke="#cc0000" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<!-- Yeux en amande — regard furieux -->
|
||||
<path d="M34 46 Q38 42 42 46 Q38 50 34 46Z" fill="#cc0000" fill-opacity="0.5" stroke="#cc0000" stroke-width="1.5"/>
|
||||
<path d="M58 46 Q62 42 66 46 Q62 50 58 46Z" fill="#cc0000" fill-opacity="0.5" stroke="#cc0000" stroke-width="1.5"/>
|
||||
<circle cx="38" cy="46" r="1.5" fill="#cc0000"/>
|
||||
<circle cx="62" cy="46" r="1.5" fill="#cc0000"/>
|
||||
<!-- Nez -->
|
||||
<path d="M46 52 Q50 56 54 52" fill="none" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<!-- Bouche avec crocs -->
|
||||
<path d="M34 62 Q42 70 50 68 Q58 70 66 62" fill="none" stroke="#cc0000" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="44" y1="65" x2="44" y2="72" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<line x1="50" y1="68" x2="50" y2="75" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<line x1="56" y1="65" x2="56" y2="72" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<!-- Moustaches -->
|
||||
<path d="M36 56 Q28 52 22 54" fill="none" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||
<path d="M64 56 Q72 52 78 54" fill="none" stroke="#cc0000" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,37 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="dieu-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#ffd700" stop-opacity="0.5"/>
|
||||
<stop offset="100%" stop-color="#ffd700" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#dieu-glow)"/>
|
||||
<!-- Soleil impérial céleste -->
|
||||
<!-- Rayons -->
|
||||
<line x1="50" y1="14" x2="50" y2="24" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="50" y1="76" x2="50" y2="86" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="14" y1="50" x2="24" y2="50" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="76" y1="50" x2="86" y2="50" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="24.8" y1="24.8" x2="31.9" y2="31.9" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="68.1" y1="68.1" x2="75.2" y2="75.2" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="75.2" y1="24.8" x2="68.1" y2="31.9" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="24.8" y1="75.2" x2="31.9" y2="68.1" stroke="#ffd700" stroke-width="2" stroke-linecap="round"/>
|
||||
<!-- Rayons diagonaux secondaires -->
|
||||
<line x1="29.6" y1="18.8" x2="33.8" y2="26.8" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||
<line x1="70.4" y1="18.8" x2="66.2" y2="26.8" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||
<line x1="18.8" y1="29.6" x2="26.8" y2="33.8" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||
<line x1="81.2" y1="29.6" x2="73.2" y2="33.8" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||
<line x1="18.8" y1="70.4" x2="26.8" y2="66.2" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||
<line x1="81.2" y1="70.4" x2="73.2" y2="66.2" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||
<line x1="29.6" y1="81.2" x2="33.8" y2="73.2" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||
<line x1="70.4" y1="81.2" x2="66.2" y2="73.2" stroke="#ffd700" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||
<!-- Cercle central solaire -->
|
||||
<circle cx="50" cy="50" r="16" fill="#ffd700" fill-opacity="0.2" stroke="#ffd700" stroke-width="2.5"/>
|
||||
<!-- Nuages célestes stylisés en dessous -->
|
||||
<path d="M32 58 Q36 52 42 56 Q46 50 50 54 Q54 50 58 56 Q64 52 68 58" fill="none" stroke="#ffd700" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||
<!-- Idéogramme stylisé au centre (天) -->
|
||||
<line x1="44" y1="45" x2="56" y2="45" stroke="#ffd700" stroke-width="1.8" stroke-linecap="round"/>
|
||||
<line x1="50" y1="42" x2="50" y2="58" stroke="#ffd700" stroke-width="1.8" stroke-linecap="round"/>
|
||||
<line x1="42" y1="58" x2="58" y2="58" stroke="#ffd700" stroke-width="1.8" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -0,0 +1,36 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="ea-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#ff8c00" stop-opacity="0.4"/>
|
||||
<stop offset="100%" stop-color="#ff8c00" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#ea-glow)"/>
|
||||
<!-- Tête de renard (esprit renard — huli jing) -->
|
||||
<!-- Museau triangulaire -->
|
||||
<path d="M28 68 Q50 30 72 68 Q62 80 50 78 Q38 80 28 68Z"
|
||||
fill="#ff8c00" fill-opacity="0.18" stroke="#ff8c00" stroke-width="2"/>
|
||||
<!-- Oreilles pointues -->
|
||||
<path d="M28 68 Q22 48 30 30 Q36 44 40 52Z" fill="#ff8c00" fill-opacity="0.25" stroke="#ff8c00" stroke-width="2"/>
|
||||
<path d="M72 68 Q78 48 70 30 Q64 44 60 52Z" fill="#ff8c00" fill-opacity="0.25" stroke="#ff8c00" stroke-width="2"/>
|
||||
<!-- Intérieur oreilles -->
|
||||
<path d="M30 62 Q27 50 33 36 Q36 46 39 52Z" fill="#ff8c00" fill-opacity="0.4" stroke="none"/>
|
||||
<path d="M70 62 Q73 50 67 36 Q64 46 61 52Z" fill="#ff8c00" fill-opacity="0.4" stroke="none"/>
|
||||
<!-- Yeux en amande -->
|
||||
<path d="M36 58 Q42 52 46 58 Q42 62 36 58Z" fill="#ff8c00" fill-opacity="0.6" stroke="#ff8c00" stroke-width="1.5"/>
|
||||
<path d="M54 58 Q58 52 64 58 Q58 62 54 58Z" fill="#ff8c00" fill-opacity="0.6" stroke="#ff8c00" stroke-width="1.5"/>
|
||||
<circle cx="41" cy="57" r="1.5" fill="#ff8c00"/>
|
||||
<circle cx="59" cy="57" r="1.5" fill="#ff8c00"/>
|
||||
<!-- Nez -->
|
||||
<path d="M46 66 Q50 70 54 66 Q50 64 46 66Z" fill="#ff8c00" opacity="0.7"/>
|
||||
<!-- Moustaches -->
|
||||
<line x1="50" y1="67" x2="50" y2="74" stroke="#ff8c00" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||
<line x1="34" y1="68" x2="46" y2="68" stroke="#ff8c00" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
||||
<line x1="54" y1="68" x2="66" y2="68" stroke="#ff8c00" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
||||
<line x1="32" y1="72" x2="46" y2="70" stroke="#ff8c00" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
||||
<line x1="54" y1="70" x2="68" y2="72" stroke="#ff8c00" stroke-width="1" stroke-linecap="round" opacity="0.5"/>
|
||||
<!-- Marques spirituelles sur le front -->
|
||||
<circle cx="50" cy="46" r="3" fill="none" stroke="#ff8c00" stroke-width="1.5" opacity="0.7"/>
|
||||
<line x1="50" y1="34" x2="50" y2="43" stroke="#ff8c00" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
@@ -0,0 +1,33 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="fa-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#88aaff" stop-opacity="0.4"/>
|
||||
<stop offset="100%" stop-color="#88aaff" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#fa-glow)"/>
|
||||
<!-- Lanterne en papier avec visage fantôme -->
|
||||
<!-- Corde du haut -->
|
||||
<line x1="50" y1="14" x2="50" y2="22" stroke="#88aaff" stroke-width="1.8" stroke-linecap="round"/>
|
||||
<line x1="44" y1="22" x2="56" y2="22" stroke="#88aaff" stroke-width="1.8" stroke-linecap="round"/>
|
||||
<!-- Corps de la lanterne -->
|
||||
<path d="M36 22 Q24 38 24 54 Q24 70 36 76 Q50 84 64 76 Q76 70 76 54 Q76 38 64 22 Z"
|
||||
fill="#88aaff" fill-opacity="0.12" stroke="#88aaff" stroke-width="2"/>
|
||||
<!-- Côtes de lanterne -->
|
||||
<path d="M26 36 Q50 32 74 36" fill="none" stroke="#88aaff" stroke-width="1" opacity="0.5"/>
|
||||
<path d="M24 50 Q50 46 76 50" fill="none" stroke="#88aaff" stroke-width="1" opacity="0.5"/>
|
||||
<path d="M26 64 Q50 60 74 64" fill="none" stroke="#88aaff" stroke-width="1" opacity="0.5"/>
|
||||
<!-- Visage fantomatique -->
|
||||
<!-- Yeux creux -->
|
||||
<ellipse cx="40" cy="48" rx="5" ry="6" fill="#88aaff" fill-opacity="0.35" stroke="#88aaff" stroke-width="1.5"/>
|
||||
<ellipse cx="60" cy="48" rx="5" ry="6" fill="#88aaff" fill-opacity="0.35" stroke="#88aaff" stroke-width="1.5"/>
|
||||
<!-- Bouche tordue -->
|
||||
<path d="M36 60 Q42 66 50 62 Q58 66 64 60" fill="none" stroke="#88aaff" stroke-width="2" stroke-linecap="round"/>
|
||||
<!-- Franges du bas de la lanterne -->
|
||||
<line x1="40" y1="76" x2="38" y2="86" stroke="#88aaff" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||
<line x1="50" y1="78" x2="50" y2="88" stroke="#88aaff" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||
<line x1="60" y1="76" x2="62" y2="86" stroke="#88aaff" stroke-width="1.2" stroke-linecap="round" opacity="0.6"/>
|
||||
<!-- Lueur intérieure -->
|
||||
<ellipse cx="50" cy="52" rx="12" ry="14" fill="#88aaff" fill-opacity="0.08"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
@@ -0,0 +1,38 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="jg-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#cc44ff" stop-opacity="0.45"/>
|
||||
<stop offset="100%" stop-color="#cc44ff" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#jg-glow)"/>
|
||||
<!-- Jiugwaai — créature de rue à multiples yeux -->
|
||||
<!-- Silhouette bossue -->
|
||||
<path d="M24 72 Q22 56 28 44 Q34 32 50 28 Q66 32 72 44 Q78 56 76 72 Q66 78 50 80 Q34 78 24 72Z"
|
||||
fill="#cc44ff" fill-opacity="0.12" stroke="#cc44ff" stroke-width="2"/>
|
||||
<!-- Multiples yeux disposés irrégulièrement -->
|
||||
<ellipse cx="36" cy="42" rx="5" ry="4" fill="#cc44ff" fill-opacity="0.4" stroke="#cc44ff" stroke-width="1.5"/>
|
||||
<circle cx="36" cy="42" r="2" fill="#cc44ff"/>
|
||||
<ellipse cx="52" cy="36" rx="4" ry="5" fill="#cc44ff" fill-opacity="0.4" stroke="#cc44ff" stroke-width="1.5"/>
|
||||
<circle cx="52" cy="36" r="2" fill="#cc44ff"/>
|
||||
<ellipse cx="65" cy="44" rx="5" ry="4" fill="#cc44ff" fill-opacity="0.4" stroke="#cc44ff" stroke-width="1.5"/>
|
||||
<circle cx="65" cy="44" r="2" fill="#cc44ff"/>
|
||||
<ellipse cx="42" cy="56" rx="4" ry="4" fill="#cc44ff" fill-opacity="0.4" stroke="#cc44ff" stroke-width="1.5"/>
|
||||
<circle cx="42" cy="56" r="2" fill="#cc44ff"/>
|
||||
<ellipse cx="60" cy="54" rx="4" ry="5" fill="#cc44ff" fill-opacity="0.4" stroke="#cc44ff" stroke-width="1.5"/>
|
||||
<circle cx="60" cy="54" r="2" fill="#cc44ff"/>
|
||||
<!-- Petit oeil supplémentaire -->
|
||||
<circle cx="50" cy="48" r="3" fill="#cc44ff" fill-opacity="0.3" stroke="#cc44ff" stroke-width="1.2"/>
|
||||
<circle cx="50" cy="48" r="1.5" fill="#cc44ff" opacity="0.8"/>
|
||||
<!-- Membres difformes -->
|
||||
<path d="M24 72 Q16 68 12 78" fill="none" stroke="#cc44ff" stroke-width="2" stroke-linecap="round" opacity="0.7"/>
|
||||
<path d="M76 72 Q84 68 88 78" fill="none" stroke="#cc44ff" stroke-width="2" stroke-linecap="round" opacity="0.7"/>
|
||||
<path d="M30 46 Q18 44 14 50" fill="none" stroke="#cc44ff" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||
<path d="M70 46 Q82 44 86 50" fill="none" stroke="#cc44ff" stroke-width="1.5" stroke-linecap="round" opacity="0.6"/>
|
||||
<!-- Bouche dentée -->
|
||||
<path d="M36 66 Q44 72 50 70 Q56 72 64 66" fill="none" stroke="#cc44ff" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="42" y1="68" x2="40" y2="74" stroke="#cc44ff" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<line x1="50" y1="70" x2="50" y2="76" stroke="#cc44ff" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<line x1="58" y1="68" x2="60" y2="74" stroke="#cc44ff" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.7 KiB |
@@ -0,0 +1,36 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="mo-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#4ecdc4" stop-opacity="0.35"/>
|
||||
<stop offset="100%" stop-color="#4ecdc4" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#mo-glow)"/>
|
||||
<!-- Silhouette homme en trench-coat — style triades HK -->
|
||||
<!-- Tête -->
|
||||
<circle cx="50" cy="22" r="8" fill="#4ecdc4" fill-opacity="0.2" stroke="#4ecdc4" stroke-width="2"/>
|
||||
<!-- Cou -->
|
||||
<line x1="50" y1="30" x2="50" y2="36" stroke="#4ecdc4" stroke-width="3" stroke-linecap="round"/>
|
||||
<!-- Corps trench-coat -->
|
||||
<path d="M32 36 Q32 54 34 68 Q42 72 50 72 Q58 72 66 68 Q68 54 68 36 Q60 32 50 32 Q40 32 32 36Z"
|
||||
fill="#4ecdc4" fill-opacity="0.12" stroke="#4ecdc4" stroke-width="2"/>
|
||||
<!-- Col relevé -->
|
||||
<path d="M36 36 Q42 30 50 32 Q58 30 64 36" fill="none" stroke="#4ecdc4" stroke-width="2" stroke-linecap="round"/>
|
||||
<!-- Revers du manteau -->
|
||||
<path d="M36 36 Q44 44 48 68" fill="none" stroke="#4ecdc4" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||
<path d="M64 36 Q56 44 52 68" fill="none" stroke="#4ecdc4" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||
<!-- Bras gauche — main dans la poche -->
|
||||
<path d="M32 36 Q22 44 22 56 Q24 60 28 58" fill="none" stroke="#4ecdc4" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<!-- Bras droit — bras le long du corps -->
|
||||
<path d="M68 36 Q78 44 78 56 Q76 60 72 58" fill="none" stroke="#4ecdc4" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<!-- Jambes -->
|
||||
<line x1="44" y1="72" x2="42" y2="88" stroke="#4ecdc4" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<line x1="56" y1="72" x2="58" y2="88" stroke="#4ecdc4" stroke-width="2.5" stroke-linecap="round"/>
|
||||
<!-- Chaussures -->
|
||||
<path d="M42 88 Q38 90 34 88" fill="none" stroke="#4ecdc4" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M58 88 Q62 90 66 88" fill="none" stroke="#4ecdc4" stroke-width="2" stroke-linecap="round"/>
|
||||
<!-- Cigarette à la bouche -->
|
||||
<line x1="52" y1="21" x2="58" y2="19" stroke="#4ecdc4" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
|
||||
<circle cx="59" cy="18" r="1.5" fill="#4ecdc4" opacity="0.8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,31 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="sh-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#00ff9f" stop-opacity="0.45"/>
|
||||
<stop offset="100%" stop-color="#00ff9f" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#sh-glow)"/>
|
||||
<!-- Trois souffles (三氣) — trois spirales en trinity -->
|
||||
<!-- Spirale 1 — haut gauche -->
|
||||
<path d="M36 38 Q28 30 30 22 Q34 14 42 18 Q50 22 48 30 Q46 36 38 38 Q32 38 30 34"
|
||||
fill="none" stroke="#00ff9f" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<circle cx="30" cy="34" r="2.5" fill="#00ff9f" opacity="0.8"/>
|
||||
<!-- Spirale 2 — haut droite -->
|
||||
<path d="M64 38 Q72 30 70 22 Q66 14 58 18 Q50 22 52 30 Q54 36 62 38 Q68 38 70 34"
|
||||
fill="none" stroke="#00ff9f" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<circle cx="70" cy="34" r="2.5" fill="#00ff9f" opacity="0.8"/>
|
||||
<!-- Spirale 3 — bas centre -->
|
||||
<path d="M50 72 Q42 76 36 72 Q30 64 36 58 Q42 52 50 56 Q58 60 58 68 Q56 76 50 78"
|
||||
fill="none" stroke="#00ff9f" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<circle cx="50" cy="78" r="2.5" fill="#00ff9f" opacity="0.8"/>
|
||||
<!-- Connexions entre les trois spirales -->
|
||||
<line x1="36" y1="38" x2="42" y2="48" stroke="#00ff9f" stroke-width="1.5" stroke-linecap="round" opacity="0.5"/>
|
||||
<line x1="64" y1="38" x2="58" y2="48" stroke="#00ff9f" stroke-width="1.5" stroke-linecap="round" opacity="0.5"/>
|
||||
<line x1="42" y1="48" x2="58" y2="48" stroke="#00ff9f" stroke-width="1.5" stroke-linecap="round" opacity="0.5"/>
|
||||
<line x1="50" y1="48" x2="50" y2="56" stroke="#00ff9f" stroke-width="1.5" stroke-linecap="round" opacity="0.5"/>
|
||||
<!-- Centre lumineux -->
|
||||
<circle cx="50" cy="48" r="5" fill="#00ff9f" fill-opacity="0.25" stroke="#00ff9f" stroke-width="1.5"/>
|
||||
<circle cx="50" cy="48" r="2" fill="#00ff9f" opacity="0.9"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,32 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="sp-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#ffe033" stop-opacity="0.45"/>
|
||||
<stop offset="100%" stop-color="#ffe033" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#sp-glow)"/>
|
||||
<!-- Papier talisman (符) qui vole -->
|
||||
<!-- Papier incliné -->
|
||||
<rect x="30" y="20" width="40" height="58" rx="3" ry="3"
|
||||
fill="#ffe033" fill-opacity="0.12" stroke="#ffe033" stroke-width="2"
|
||||
transform="rotate(-12 50 50)"/>
|
||||
<!-- Lignes d'écriture de talisman -->
|
||||
<line x1="36" y1="30" x2="62" y2="26" stroke="#ffe033" stroke-width="1.8" stroke-linecap="round" opacity="0.8" transform="rotate(-12 50 50)"/>
|
||||
<line x1="34" y1="38" x2="64" y2="34" stroke="#ffe033" stroke-width="1.4" stroke-linecap="round" opacity="0.6" transform="rotate(-12 50 50)"/>
|
||||
<line x1="33" y1="46" x2="63" y2="42" stroke="#ffe033" stroke-width="1.4" stroke-linecap="round" opacity="0.6" transform="rotate(-12 50 50)"/>
|
||||
<!-- Grand caractère fu (符) au centre -->
|
||||
<text x="50" y="58" text-anchor="middle" font-size="26" font-family="serif"
|
||||
fill="#ffe033" fill-opacity="0.7" transform="rotate(-12 50 50)">符</text>
|
||||
<!-- Lignes de sceau en bas -->
|
||||
<line x1="34" y1="66" x2="64" y2="62" stroke="#ffe033" stroke-width="1.8" stroke-linecap="round" opacity="0.8" transform="rotate(-12 50 50)"/>
|
||||
<!-- Énergie qui s'échappe du papier -->
|
||||
<path d="M72 22 Q80 16 82 22 Q76 26 72 22Z" fill="#ffe033" fill-opacity="0.5"/>
|
||||
<path d="M76 32 Q84 28 86 34 Q80 36 76 32Z" fill="#ffe033" fill-opacity="0.4"/>
|
||||
<path d="M22 60 Q14 56 14 62 Q20 64 22 60Z" fill="#ffe033" fill-opacity="0.4"/>
|
||||
<!-- Petites étincelles -->
|
||||
<circle cx="80" cy="26" r="1.5" fill="#ffe033" opacity="0.9"/>
|
||||
<circle cx="18" cy="62" r="1.5" fill="#ffe033" opacity="0.9"/>
|
||||
<circle cx="74" cy="40" r="1" fill="#ffe033" opacity="0.7"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,29 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="sn-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#ff44cc" stop-opacity="0.5"/>
|
||||
<stop offset="100%" stop-color="#ff44cc" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#sn-glow)"/>
|
||||
<!-- Vortex de qi — spirale d'énergie -->
|
||||
<!-- Spirale externe -->
|
||||
<path d="M50 16 Q72 18 80 36 Q88 54 74 68 Q60 82 42 78 Q24 74 18 58 Q12 42 24 28 Q36 14 52 16"
|
||||
fill="none" stroke="#ff44cc" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<!-- Spirale intermédiaire -->
|
||||
<path d="M50 26 Q64 28 70 42 Q76 56 66 66 Q56 76 42 70 Q28 64 28 50 Q28 36 40 30 Q52 24 62 28"
|
||||
fill="none" stroke="#ff44cc" stroke-width="2" stroke-linecap="round" opacity="0.75"/>
|
||||
<!-- Spirale interne -->
|
||||
<path d="M50 36 Q58 36 62 44 Q66 52 60 60 Q54 66 46 62 Q38 58 38 50 Q38 42 44 38 Q50 34 56 38"
|
||||
fill="none" stroke="#ff44cc" stroke-width="1.8" stroke-linecap="round" opacity="0.6"/>
|
||||
<!-- Noyau central -->
|
||||
<circle cx="50" cy="50" r="8" fill="#ff44cc" fill-opacity="0.2" stroke="#ff44cc" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="3" fill="#ff44cc" opacity="0.9"/>
|
||||
<!-- Particules d'énergie en orbite -->
|
||||
<circle cx="50" cy="16" r="2.5" fill="#ff44cc" opacity="0.8"/>
|
||||
<circle cx="80" cy="36" r="2" fill="#ff44cc" opacity="0.7"/>
|
||||
<circle cx="74" cy="68" r="2.5" fill="#ff44cc" opacity="0.8"/>
|
||||
<circle cx="18" cy="58" r="2" fill="#ff44cc" opacity="0.7"/>
|
||||
<circle cx="24" cy="28" r="2" fill="#ff44cc" opacity="0.7"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,36 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
<defs>
|
||||
<radialGradient id="wp-glow" cx="50%" cy="50%" r="50%">
|
||||
<stop offset="0%" stop-color="#ff6b35" stop-opacity="0.4"/>
|
||||
<stop offset="100%" stop-color="#ff6b35" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<circle cx="50" cy="50" r="48" fill="#101622" stroke="#1a2436" stroke-width="2"/>
|
||||
<circle cx="50" cy="50" r="48" fill="url(#wp-glow)"/>
|
||||
<!-- Deux couteaux papillon (wing chun) croisés -->
|
||||
<!-- Couteau 1 — orientation ↗ -->
|
||||
<!-- Lame gauche -->
|
||||
<path d="M24 72 Q28 60 36 50 Q44 40 56 28 L58 32 Q48 44 40 54 Q32 64 28 76 Z"
|
||||
fill="#ff6b35" fill-opacity="0.25" stroke="#ff6b35" stroke-width="1.8"/>
|
||||
<!-- Garde en D couteau 1 -->
|
||||
<path d="M36 50 Q32 46 28 48 Q26 52 30 54 Q34 56 36 50Z"
|
||||
fill="#ff6b35" fill-opacity="0.4" stroke="#ff6b35" stroke-width="1.5"/>
|
||||
<!-- Manche couteau 1 -->
|
||||
<line x1="28" y1="76" x2="20" y2="84" stroke="#ff6b35" stroke-width="3.5" stroke-linecap="round"/>
|
||||
<!-- Couteau 2 — orientation ↖ croisé -->
|
||||
<!-- Lame droite -->
|
||||
<path d="M76 72 Q72 60 64 50 Q56 40 44 28 L42 32 Q52 44 60 54 Q68 64 72 76 Z"
|
||||
fill="#ff6b35" fill-opacity="0.25" stroke="#ff6b35" stroke-width="1.8"/>
|
||||
<!-- Garde en D couteau 2 -->
|
||||
<path d="M64 50 Q68 46 72 48 Q74 52 70 54 Q66 56 64 50Z"
|
||||
fill="#ff6b35" fill-opacity="0.4" stroke="#ff6b35" stroke-width="1.5"/>
|
||||
<!-- Manche couteau 2 -->
|
||||
<line x1="72" y1="76" x2="80" y2="84" stroke="#ff6b35" stroke-width="3.5" stroke-linecap="round"/>
|
||||
<!-- Reflets sur les lames -->
|
||||
<line x1="42" y1="44" x2="46" y2="40" stroke="#ff6b35" stroke-width="1" stroke-linecap="round" opacity="0.7"/>
|
||||
<line x1="58" y1="44" x2="54" y2="40" stroke="#ff6b35" stroke-width="1" stroke-linecap="round" opacity="0.7"/>
|
||||
<!-- Étincelle au croisement -->
|
||||
<circle cx="50" cy="50" r="3" fill="#ff6b35" opacity="0.9"/>
|
||||
<line x1="50" y1="44" x2="50" y2="56" stroke="#ff6b35" stroke-width="1" stroke-linecap="round" opacity="0.6"/>
|
||||
<line x1="44" y1="50" x2="56" y2="50" stroke="#ff6b35" stroke-width="1" stroke-linecap="round" opacity="0.6"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 65 KiB |