Aurore rose-mauve et vert fluo ; thème Forgejo étendu au wiki
Palette (promo/, les 4 pages) — ajoute --rose:#ff6fc4 (frange magenta) et
--vert:#5cff9d (vert fluo), uniquement dans les DÉGRADÉS FONCÉS : fond fixe du
corps, nappe .aurora dérivante, filets .rule. Opacités de 5,5 % à 8,5 %, une
teinte et non un motif. Le vert entre par la gauche et le rose sort par la
droite, comme une vraie aurore. --aurora (texte et boutons) est inchangé :
l'identité de marque ne bouge pas. Appliqué identiquement aux quatre fichiers,
0 conflit CSS après coup.
Thème Forgejo (alliance.css, 29 → 118 lignes) — la feuille étant injectée par
templates/custom/header.tmpl sur toutes les pages, le wiki est couvert sans
feuille distincte. Réorganisée en deux sections de risque explicite :
§1 Variables — couleurs officielles + ciel nocturne. Sûr, résiste aux
mises à jour. ÉPROUVÉ sur forge-01 (CHANGELOG 2026-07-03).
§2 Décor — fond aurore, filet sous les titres, citations, tableaux et code
en ligne de .markup. Fragile (classes internes). JAMAIS RENDU.
Supprimer §2 ramène au thème sobre. Le ciel nocturne ne s'applique qu'aux
thèmes sombres, pour ne pas casser le thème clair.
docs/theme-forgejo-hors-flotte.md — pose manuelle sur une instance Forgejo non
gérée par Set-OPS (la forge historique qui héberge ce dépôt et son wiki).
Forgejo n'ayant aucun réglage web pour le CSS, il faut déposer la feuille sur
le serveur. La procédure ne duplique aucun fichier : elle pointe vers ceux du
rôle. Inclut la détection du répertoire custom, un garde-fou pour ne pas
écraser un header.tmpl existant (ajout de ligne), la vérification curl et la
marche arrière.
Corrige deux affirmations fausses de ma part :
- « thème jamais rendu par un Forgejo réel » était faux pour §1, éprouvée.
Le statut est désormais donné section par section.
- Contradiction consignée sur forge-01 : le plan la dit `etat: planifie`, le
CHANGELOG 2026-07-03 dit le branding « prouvé sur forge-01 ». Les deux ne
peuvent pas être vrais ; l'écart est écrit dans le README du rôle, à trancher.
Validé : équilibre accolades/parenthèses du CSS, 0 conflit CSS entre les quatre
pages, lien de doc résolu, ansible-lint 0 échec sur 485 fichiers,
prouver.py --verifier → CONFORME 16/16.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
7cc6b1e878
commit
f8e754c0b0
8 changed files with 319 additions and 13 deletions
41
CHANGELOG.md
41
CHANGELOG.md
|
|
@ -1,5 +1,46 @@
|
|||
# CHANGELOG — Set-OPS
|
||||
|
||||
## 2026-07-21 (suite)
|
||||
|
||||
### Modifié
|
||||
- **Palette aurore enrichie sur les quatre pages `promo/`** — ajout de deux teintes,
|
||||
`--rose:#ff6fc4` (frange magenta) et `--vert:#5cff9d` (vert fluo), présentes uniquement
|
||||
dans les **dégradés foncés** : fond fixe du corps, nappe `.aurora` dérivante, et filets
|
||||
de séparation `.rule`. Opacités de 5,5 % à 8,5 % — une teinte, pas un motif. Les
|
||||
dégradés de texte et de boutons (`--aurora`) sont **inchangés** : l'identité de marque
|
||||
ne bouge pas. Appliqué identiquement aux quatre fichiers (0 conflit CSS après coup).
|
||||
- **Thème Forgejo étendu au wiki** (`roles/serveur_forgejo/files/custom/public/assets/css/alliance.css`,
|
||||
29 → 118 lignes). La feuille étant injectée par `templates/custom/header.tmpl` sur toutes
|
||||
les pages, le wiki est couvert **sans feuille distincte**. Réorganisée en deux sections
|
||||
de risque explicite : **§1 Variables** (surcharge des variables de couleur officielles,
|
||||
sûr, résiste aux mises à jour) et **§2 Décor** (fond aurore, filet sous les titres,
|
||||
citations, tableaux et code en ligne de `.markup` — sélecteurs internes, à revérifier à
|
||||
chaque montée de version majeure). Supprimer §2 ramène au thème sobre d'origine. Le ciel
|
||||
nocturne ne s'applique qu'aux thèmes sombres, pour ne pas casser le thème clair.
|
||||
`roles/serveur_forgejo/README.md` documente le tout.
|
||||
|
||||
### Ajouté
|
||||
- **`docs/theme-forgejo-hors-flotte.md`** — pose **manuelle** du thème sur une instance
|
||||
Forgejo **non gérée par Set-OPS** (la forge historique qui héberge ce dépôt et son wiki).
|
||||
Forgejo n'ayant aucun réglage web pour le CSS, il faut déposer la feuille et référencer
|
||||
`header.tmpl` sur le serveur. La procédure **ne duplique aucun fichier** : elle pointe
|
||||
vers ceux de `roles/serveur_forgejo/files/custom/`. Comprend la détection du répertoire
|
||||
`custom`, un garde-fou pour ne pas écraser un `header.tmpl` existant (ajout de ligne, pas
|
||||
remplacement), la vérification par `curl`, et la marche arrière.
|
||||
|
||||
### Corrigé
|
||||
- **Contradiction sur l'état de forge-01, consignée.** `roles/serveur_forgejo/README.md`
|
||||
affirmait « non testé live » alors que `CHANGELOG.md` (2026-07-03) affirme le branding
|
||||
« prouvé sur forge-01 » et que le plan la déclare `etat: planifie`. Les trois ne peuvent
|
||||
pas être vrais ensemble. Le README porte désormais l'écart explicitement, à trancher.
|
||||
- **Statut du thème précisé, section par section** : §1 (variables) est **éprouvée** sur
|
||||
forge-01 ; §2 (décor), ajoutée aujourd'hui, n'a **jamais été rendue** par un Forgejo réel.
|
||||
L'affirmation précédente (« non rendu par un Forgejo réel », tous les cas confondus) était
|
||||
fausse pour §1.
|
||||
|
||||
Validé : équilibre des accolades et parenthèses du CSS, 0 conflit CSS entre les quatre
|
||||
pages promo, `ansible-lint` 0 échec, `prouver.py --verifier` → CONFORME 16/16.
|
||||
|
||||
## 2026-07-21
|
||||
|
||||
### Ajouté
|
||||
|
|
|
|||
123
docs/theme-forgejo-hors-flotte.md
Normal file
123
docs/theme-forgejo-hors-flotte.md
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
# Appliquer le thème Alliance Boréale à une forge Forgejo hors flotte
|
||||
|
||||
Procédure **manuelle**, pour une instance Forgejo qui n'est **pas** gérée par Set-OPS —
|
||||
typiquement la forge historique qui héberge ce dépôt et son wiki.
|
||||
|
||||
> Pour une forge de la flotte (`forge-01`), ne rien faire à la main : passer
|
||||
> `serveur_forgejo_branding: true` et déployer le groupe `serveur_forgejo`. Le rôle copie
|
||||
> exactement les mêmes fichiers.
|
||||
|
||||
## Ce que ça couvre
|
||||
|
||||
Forgejo n'offre **aucun réglage web** pour le CSS personnalisé : il faut déposer un fichier
|
||||
sur le serveur. Une fois en place, la feuille est injectée sur **toutes** les pages —
|
||||
dépôts, tickets, code, README et **wiki**. Le wiki n'a pas de thème distinct, il hérite du
|
||||
même habillage.
|
||||
|
||||
## Prérequis
|
||||
|
||||
- accès **root** (ou `sudo`) sur la machine qui exécute Forgejo ;
|
||||
- connaître le **répertoire `custom`** de l'instance ;
|
||||
- une fenêtre où redémarrer le service est acceptable (quelques secondes d'indisponibilité).
|
||||
|
||||
Trouver le répertoire `custom` :
|
||||
|
||||
```bash
|
||||
# 1. déclaré explicitement ?
|
||||
grep -iE '^\s*(CUSTOM_PATH|ROOT)\s*=' /etc/forgejo/app.ini
|
||||
|
||||
# 2. ou par la variable d'environnement du service
|
||||
systemctl show forgejo -p Environment | tr ' ' '\n' | grep -i custom
|
||||
|
||||
# 3. défaut usuel des paquets / installs binaires
|
||||
ls -d /var/lib/forgejo/custom 2>/dev/null
|
||||
```
|
||||
|
||||
## Les fichiers
|
||||
|
||||
Les deux fichiers vivent déjà dans ce dépôt — **ne pas en faire de copie** :
|
||||
|
||||
| Fichier du dépôt | Destination sur la forge |
|
||||
|---|---|
|
||||
| `roles/serveur_forgejo/files/custom/public/assets/css/alliance.css` | `<custom>/public/assets/css/alliance.css` |
|
||||
| `roles/serveur_forgejo/files/custom/templates/custom/header.tmpl` | `<custom>/templates/custom/header.tmpl` |
|
||||
|
||||
Optionnels, si l'on veut aussi le logo et la favicon étoile :
|
||||
`files/custom/public/assets/img/{logo,favicon}.svg` → `<custom>/public/assets/img/`.
|
||||
|
||||
## Pose
|
||||
|
||||
Depuis une copie locale du dépôt, en remplaçant `FORGE` et `CUSTOM` :
|
||||
|
||||
```bash
|
||||
FORGE=root@forge.exemple.ca # hôte de la forge
|
||||
CUSTOM=/var/lib/forgejo/custom # répertoire custom trouvé plus haut
|
||||
SRC=roles/serveur_forgejo/files/custom
|
||||
|
||||
scp "$SRC/public/assets/css/alliance.css" "$FORGE:/tmp/alliance.css"
|
||||
```
|
||||
|
||||
Puis **sur la forge** :
|
||||
|
||||
```bash
|
||||
CUSTOM=/var/lib/forgejo/custom
|
||||
OWNER=git:git # utilisateur du service (souvent git ou forgejo)
|
||||
|
||||
install -D -o $OWNER -m 0644 /tmp/alliance.css "$CUSTOM/public/assets/css/alliance.css"
|
||||
```
|
||||
|
||||
### Injecter la feuille — l'étape à ne pas rater
|
||||
|
||||
`header.tmpl` est injecté dans le `<head>` de **toutes** les pages.
|
||||
|
||||
> ⚠️ **Si le fichier existe déjà, ne pas l'écraser** : une autre personnalisation y vit
|
||||
> peut-être. Y **ajouter** la ligne.
|
||||
|
||||
```bash
|
||||
CUSTOM=/var/lib/forgejo/custom
|
||||
LINK='<link rel="stylesheet" href="{{AppSubUrl}}/assets/css/alliance.css?v=1">'
|
||||
TPL="$CUSTOM/templates/custom/header.tmpl"
|
||||
|
||||
if [ -f "$TPL" ]; then
|
||||
grep -qF 'alliance.css' "$TPL" || printf '%s\n' "$LINK" >> "$TPL"
|
||||
else
|
||||
install -D -o git:git -m 0644 /dev/null "$TPL"
|
||||
printf '%s\n' "$LINK" > "$TPL"
|
||||
fi
|
||||
|
||||
systemctl restart forgejo
|
||||
```
|
||||
|
||||
## Vérifier
|
||||
|
||||
```bash
|
||||
# la feuille est servie (200, type CSS)
|
||||
curl -sI https://forge.exemple.ca/assets/css/alliance.css | head -3
|
||||
|
||||
# elle est bien référencée dans le <head> d'une page de wiki
|
||||
curl -s https://forge.exemple.ca/<proprio>/<depot>/wiki | grep -o 'alliance\.css[^"]*'
|
||||
```
|
||||
|
||||
À l'œil, sur une page de wiki en thème sombre : fond bleu nuit avec une nappe magenta à
|
||||
droite et verte en bas à gauche, filet d'aurore sous les titres, code en ligne en teal.
|
||||
|
||||
Le ciel nocturne ne s'applique **qu'aux thèmes sombres** (`forgejo-dark`, `forgejo-auto`).
|
||||
En thème clair, seules les couleurs d'accent changent — c'est voulu.
|
||||
|
||||
## Revenir en arrière
|
||||
|
||||
```bash
|
||||
CUSTOM=/var/lib/forgejo/custom
|
||||
sed -i '/alliance\.css/d' "$CUSTOM/templates/custom/header.tmpl"
|
||||
rm -f "$CUSTOM/public/assets/css/alliance.css"
|
||||
systemctl restart forgejo
|
||||
```
|
||||
|
||||
## Après une mise à jour de Forgejo
|
||||
|
||||
`alliance.css` est en deux sections (cf. `roles/serveur_forgejo/README.md`) :
|
||||
|
||||
- **§1 Variables** — surcharge de variables de couleur officielles. Ne casse pas.
|
||||
- **§2 Décor** — s'appuie sur des classes internes (`.markup h1`, `.markup blockquote`…).
|
||||
**À revérifier après chaque montée de version majeure.** Si quelque chose déraille,
|
||||
supprimer §2 ramène au thème sobre sans rien perdre d'essentiel.
|
||||
|
|
@ -15,6 +15,7 @@
|
|||
--line:rgba(255,255,255,.10); --line-2:rgba(255,255,255,.06);
|
||||
--panel:rgba(255,255,255,.045); --panel-2:rgba(255,255,255,.03);
|
||||
--teal:#4fe3c1; --cyan:#56c2ff; --violet:#a98bff; --amber:#ffc46b;
|
||||
--rose:#ff6fc4; --vert:#5cff9d; /* frange magenta + vert fluo de l'aurore */
|
||||
--aurora:linear-gradient(100deg,var(--teal) 0%,var(--cyan) 46%,var(--violet) 100%);
|
||||
--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Noto Sans","Helvetica Neue",Arial,sans-serif;
|
||||
--mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,"Liberation Mono",monospace;
|
||||
|
|
@ -27,6 +28,9 @@
|
|||
background:
|
||||
radial-gradient(1200px 760px at 82% -8%,#141c4c 0%,transparent 58%),
|
||||
radial-gradient(900px 620px at 8% -2%,#0e1640 0%,transparent 55%),
|
||||
radial-gradient(780px 540px at 97% 38%,rgba(255,111,196,.085) 0%,transparent 62%),
|
||||
radial-gradient(840px 580px at 3% 72%,rgba(92,255,157,.065) 0%,transparent 62%),
|
||||
radial-gradient(700px 500px at 50% 112%,rgba(169,139,255,.07) 0%,transparent 60%),
|
||||
linear-gradient(180deg,var(--night-2) 0%,var(--night) 62%) fixed;
|
||||
-webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
|
||||
overflow-x:hidden;
|
||||
|
|
@ -38,9 +42,11 @@
|
|||
position:fixed;left:-10%;right:-10%;top:-22%;height:74vh;z-index:-1;pointer-events:none;
|
||||
filter:blur(64px) saturate(140%);opacity:.42;
|
||||
background:
|
||||
radial-gradient(34% 52% at 6% 52%,var(--vert) 0%,transparent 66%),
|
||||
radial-gradient(40% 60% at 20% 30%,var(--teal) 0%,transparent 70%),
|
||||
radial-gradient(45% 70% at 55% 20%,var(--cyan) 0%,transparent 70%),
|
||||
radial-gradient(40% 65% at 82% 35%,var(--violet) 0%,transparent 70%);
|
||||
radial-gradient(40% 65% at 82% 35%,var(--violet) 0%,transparent 70%),
|
||||
radial-gradient(32% 48% at 95% 62%,var(--rose) 0%,transparent 66%);
|
||||
animation:drift 24s ease-in-out infinite alternate;
|
||||
}
|
||||
@keyframes drift{from{transform:translate(-3%,0) scale(1)}to{transform:translate(3%,2%) scale(1.08)}}
|
||||
|
|
@ -86,7 +92,7 @@
|
|||
.sec-head{max-width:68ch;margin-bottom:42px}
|
||||
.sec-head h2{font-size:clamp(1.75rem,3.4vw,2.6rem);font-weight:750;letter-spacing:-.015em;margin-top:14px}
|
||||
.sec-head p{margin-top:16px;color:var(--dim);font-size:1.07rem}
|
||||
.rule{height:1px;background:linear-gradient(90deg,var(--line),transparent);border:0;margin:0}
|
||||
.rule{height:1px;border:0;margin:0;background:linear-gradient(90deg,rgba(92,255,157,.28),rgba(86,194,255,.22) 34%,rgba(255,111,196,.24) 68%,transparent)}
|
||||
/* ---- méthode : 4 temps ---- */
|
||||
.beats{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}
|
||||
.beat{background:var(--panel-2);border:1px solid var(--line-2);border-radius:15px;padding:22px}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
--line:rgba(255,255,255,.10); --line-2:rgba(255,255,255,.06);
|
||||
--panel:rgba(255,255,255,.045); --panel-2:rgba(255,255,255,.03);
|
||||
--teal:#4fe3c1; --cyan:#56c2ff; --violet:#a98bff; --amber:#ffc46b;
|
||||
--rose:#ff6fc4; --vert:#5cff9d; /* frange magenta + vert fluo de l'aurore */
|
||||
--aurora:linear-gradient(100deg,var(--teal) 0%,var(--cyan) 46%,var(--violet) 100%);
|
||||
--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Noto Sans","Helvetica Neue",Arial,sans-serif;
|
||||
--mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,"Liberation Mono",monospace;
|
||||
|
|
@ -27,6 +28,9 @@
|
|||
background:
|
||||
radial-gradient(1200px 760px at 82% -8%,#141c4c 0%,transparent 58%),
|
||||
radial-gradient(900px 620px at 8% -2%,#0e1640 0%,transparent 55%),
|
||||
radial-gradient(780px 540px at 97% 38%,rgba(255,111,196,.085) 0%,transparent 62%),
|
||||
radial-gradient(840px 580px at 3% 72%,rgba(92,255,157,.065) 0%,transparent 62%),
|
||||
radial-gradient(700px 500px at 50% 112%,rgba(169,139,255,.07) 0%,transparent 60%),
|
||||
linear-gradient(180deg,var(--night-2) 0%,var(--night) 62%) fixed;
|
||||
-webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
|
||||
overflow-x:hidden;
|
||||
|
|
@ -37,9 +41,11 @@
|
|||
position:fixed;left:-10%;right:-10%;top:-22%;height:74vh;z-index:-1;pointer-events:none;
|
||||
filter:blur(64px) saturate(140%);opacity:.42;
|
||||
background:
|
||||
radial-gradient(34% 52% at 6% 52%,var(--vert) 0%,transparent 66%),
|
||||
radial-gradient(40% 60% at 20% 30%,var(--teal) 0%,transparent 70%),
|
||||
radial-gradient(45% 70% at 55% 20%,var(--cyan) 0%,transparent 70%),
|
||||
radial-gradient(40% 65% at 82% 35%,var(--violet) 0%,transparent 70%);
|
||||
radial-gradient(40% 65% at 82% 35%,var(--violet) 0%,transparent 70%),
|
||||
radial-gradient(32% 48% at 95% 62%,var(--rose) 0%,transparent 66%);
|
||||
animation:drift 24s ease-in-out infinite alternate;
|
||||
}
|
||||
@keyframes drift{from{transform:translate(-3%,0) scale(1)}to{transform:translate(3%,2%) scale(1.08)}}
|
||||
|
|
@ -78,7 +84,7 @@
|
|||
.sec-head{max-width:68ch;margin-bottom:42px}
|
||||
.sec-head h2{font-size:clamp(1.75rem,3.4vw,2.6rem);font-weight:750;letter-spacing:-.015em;margin-top:14px}
|
||||
.sec-head p{margin-top:16px;color:var(--dim);font-size:1.07rem}
|
||||
.rule{height:1px;background:linear-gradient(90deg,var(--line),transparent);border:0;margin:0}
|
||||
.rule{height:1px;border:0;margin:0;background:linear-gradient(90deg,rgba(92,255,157,.28),rgba(86,194,255,.22) 34%,rgba(255,111,196,.24) 68%,transparent)}
|
||||
/* ---- principe modulaire ---- */
|
||||
.beats{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}
|
||||
.beat{background:var(--panel-2);border:1px solid var(--line-2);border-radius:15px;padding:22px}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
--line:rgba(255,255,255,.10); --line-2:rgba(255,255,255,.06);
|
||||
--panel:rgba(255,255,255,.045); --panel-2:rgba(255,255,255,.03);
|
||||
--teal:#4fe3c1; --cyan:#56c2ff; --violet:#a98bff; --amber:#ffc46b;
|
||||
--rose:#ff6fc4; --vert:#5cff9d; /* frange magenta + vert fluo de l'aurore */
|
||||
--aurora:linear-gradient(100deg,var(--teal) 0%,var(--cyan) 46%,var(--violet) 100%);
|
||||
--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Noto Sans","Helvetica Neue",Arial,sans-serif;
|
||||
--mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,"Liberation Mono",monospace;
|
||||
|
|
@ -27,6 +28,9 @@
|
|||
background:
|
||||
radial-gradient(1200px 760px at 82% -8%,#141c4c 0%,transparent 58%),
|
||||
radial-gradient(900px 620px at 8% -2%,#0e1640 0%,transparent 55%),
|
||||
radial-gradient(780px 540px at 97% 38%,rgba(255,111,196,.085) 0%,transparent 62%),
|
||||
radial-gradient(840px 580px at 3% 72%,rgba(92,255,157,.065) 0%,transparent 62%),
|
||||
radial-gradient(700px 500px at 50% 112%,rgba(169,139,255,.07) 0%,transparent 60%),
|
||||
linear-gradient(180deg,var(--night-2) 0%,var(--night) 62%) fixed;
|
||||
-webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
|
||||
overflow-x:hidden;
|
||||
|
|
@ -37,9 +41,11 @@
|
|||
position:fixed;left:-10%;right:-10%;top:-22%;height:74vh;z-index:-1;pointer-events:none;
|
||||
filter:blur(64px) saturate(140%);opacity:.42;
|
||||
background:
|
||||
radial-gradient(34% 52% at 6% 52%,var(--vert) 0%,transparent 66%),
|
||||
radial-gradient(40% 60% at 20% 30%,var(--teal) 0%,transparent 70%),
|
||||
radial-gradient(45% 70% at 55% 20%,var(--cyan) 0%,transparent 70%),
|
||||
radial-gradient(40% 65% at 82% 35%,var(--violet) 0%,transparent 70%);
|
||||
radial-gradient(40% 65% at 82% 35%,var(--violet) 0%,transparent 70%),
|
||||
radial-gradient(32% 48% at 95% 62%,var(--rose) 0%,transparent 66%);
|
||||
animation:drift 24s ease-in-out infinite alternate;
|
||||
}
|
||||
@keyframes drift{from{transform:translate(-3%,0) scale(1)}to{transform:translate(3%,2%) scale(1.08)}}
|
||||
|
|
@ -78,7 +84,7 @@
|
|||
.sec-head{max-width:68ch;margin-bottom:42px}
|
||||
.sec-head h2{font-size:clamp(1.75rem,3.4vw,2.6rem);font-weight:750;letter-spacing:-.015em;margin-top:14px}
|
||||
.sec-head p{margin-top:16px;color:var(--dim);font-size:1.07rem}
|
||||
.rule{height:1px;background:linear-gradient(90deg,var(--line),transparent);border:0;margin:0}
|
||||
.rule{height:1px;border:0;margin:0;background:linear-gradient(90deg,rgba(92,255,157,.28),rgba(86,194,255,.22) 34%,rgba(255,111,196,.24) 68%,transparent)}
|
||||
/* ---- 3 postes ---- */
|
||||
.beats{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}
|
||||
.beat{background:var(--panel-2);border:1px solid var(--line-2);border-radius:15px;padding:22px}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
--line:rgba(255,255,255,.10); --line-2:rgba(255,255,255,.06);
|
||||
--panel:rgba(255,255,255,.045); --panel-2:rgba(255,255,255,.03);
|
||||
--teal:#4fe3c1; --cyan:#56c2ff; --violet:#a98bff; --amber:#ffc46b;
|
||||
--rose:#ff6fc4; --vert:#5cff9d; /* frange magenta + vert fluo de l'aurore */
|
||||
--aurora:linear-gradient(100deg,var(--teal) 0%,var(--cyan) 46%,var(--violet) 100%);
|
||||
--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Noto Sans","Helvetica Neue",Arial,sans-serif;
|
||||
--mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,"Liberation Mono",monospace;
|
||||
|
|
@ -27,6 +28,9 @@
|
|||
background:
|
||||
radial-gradient(1200px 760px at 82% -8%,#141c4c 0%,transparent 58%),
|
||||
radial-gradient(900px 620px at 8% -2%,#0e1640 0%,transparent 55%),
|
||||
radial-gradient(780px 540px at 97% 38%,rgba(255,111,196,.085) 0%,transparent 62%),
|
||||
radial-gradient(840px 580px at 3% 72%,rgba(92,255,157,.065) 0%,transparent 62%),
|
||||
radial-gradient(700px 500px at 50% 112%,rgba(169,139,255,.07) 0%,transparent 60%),
|
||||
linear-gradient(180deg,var(--night-2) 0%,var(--night) 62%) fixed;
|
||||
-webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
|
||||
overflow-x:hidden;
|
||||
|
|
@ -37,9 +41,11 @@
|
|||
position:fixed;left:-10%;right:-10%;top:-22%;height:74vh;z-index:-1;pointer-events:none;
|
||||
filter:blur(64px) saturate(140%);opacity:.42;
|
||||
background:
|
||||
radial-gradient(34% 52% at 6% 52%,var(--vert) 0%,transparent 66%),
|
||||
radial-gradient(40% 60% at 20% 30%,var(--teal) 0%,transparent 70%),
|
||||
radial-gradient(45% 70% at 55% 20%,var(--cyan) 0%,transparent 70%),
|
||||
radial-gradient(40% 65% at 82% 35%,var(--violet) 0%,transparent 70%);
|
||||
radial-gradient(40% 65% at 82% 35%,var(--violet) 0%,transparent 70%),
|
||||
radial-gradient(32% 48% at 95% 62%,var(--rose) 0%,transparent 66%);
|
||||
animation:drift 24s ease-in-out infinite alternate;
|
||||
}
|
||||
@keyframes drift{from{transform:translate(-3%,0) scale(1)}to{transform:translate(3%,2%) scale(1.08)}}
|
||||
|
|
@ -78,7 +84,7 @@
|
|||
.sec-head{max-width:68ch;margin-bottom:42px}
|
||||
.sec-head h2{font-size:clamp(1.75rem,3.4vw,2.6rem);font-weight:750;letter-spacing:-.015em;margin-top:14px}
|
||||
.sec-head p{margin-top:16px;color:var(--dim);font-size:1.07rem}
|
||||
.rule{height:1px;background:linear-gradient(90deg,var(--line),transparent);border:0;margin:0}
|
||||
.rule{height:1px;border:0;margin:0;background:linear-gradient(90deg,rgba(92,255,157,.28),rgba(86,194,255,.22) 34%,rgba(255,111,196,.24) 68%,transparent)}
|
||||
/* ---- calculateur ---- */
|
||||
.calc{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:26px;align-items:start}
|
||||
@media(max-width:900px){.calc{grid-template-columns:1fr}}
|
||||
|
|
|
|||
|
|
@ -24,11 +24,40 @@ vault_bd_forgejo: "..." # mot de passe BD (partage avec serveur_postgresql)
|
|||
| `serveur_forgejo_hostname` | `forge.exemple.internal` | Domaine (via nginx) |
|
||||
| `serveur_forgejo_db_host` | `10.0.13.11` | data-01 |
|
||||
|
||||
## Identité visuelle (thème Alliance Boréale)
|
||||
|
||||
Désactivée par défaut : `serveur_forgejo_branding: false`. À `true`, le rôle copie
|
||||
`files/custom/` vers `{{ serveur_forgejo_data }}/custom/` — logo, favicon, page
|
||||
d'accueil et la feuille `public/assets/css/alliance.css`, injectée sur **toutes** les
|
||||
pages par `templates/custom/header.tmpl`.
|
||||
|
||||
Le **wiki n'a donc pas de thème distinct** : Forgejo le rend avec le même habillage,
|
||||
et la feuille le couvre au même titre que les dépôts, les tickets et les README.
|
||||
|
||||
`alliance.css` est en **deux sections, de risque différent** :
|
||||
|
||||
| Section | Contenu | Risque | État |
|
||||
|---|---|---|---|
|
||||
| **§1 Variables** | surcharge des variables de couleur officielles (`--color-primary`, `--color-body`…) | **Sûr** — aucune classe interne touchée, résiste aux mises à jour | **Éprouvé** sur forge-01 (CHANGELOG 2026-07-03 : `alliance.css` servi, cyan aurore rendu) |
|
||||
| **§2 Décor** | fond aurore (`body`), filet sous les titres, citations, tableaux et code en ligne du contenu rendu (`.markup`) | **Fragile** — sélecteurs internes de Forgejo, à revérifier après chaque montée de version majeure | **Jamais rendu** — ajouté le 2026-07-21, validé en syntaxe CSS seulement |
|
||||
|
||||
> Supprimer §2 ramène au thème sobre d'origine : §1 se suffit à elle-même.
|
||||
|
||||
Le ciel nocturne ne s'applique qu'aux thèmes **sombres** (`theme-forgejo-dark`,
|
||||
`theme-forgejo-auto`) pour ne pas casser le thème clair.
|
||||
|
||||
Pour une forge **hors flotte** (instance Forgejo non gérée par Set-OPS), la pose manuelle
|
||||
des mêmes fichiers est décrite dans [`docs/theme-forgejo-hors-flotte.md`](../../docs/theme-forgejo-hors-flotte.md).
|
||||
|
||||
## Notes / limites
|
||||
- **Version** à confirmer sur forgejo.org/download ; l'URL suit le motif officiel des releases.
|
||||
- Le **site nginx** publiant Forgejo se déclare côté `serveur_nginx`.
|
||||
- Mailer en SMTP simple vers le relais interne (sans TLS pour l'instant).
|
||||
- Non testé live (forge-01 planifié).
|
||||
- **État de forge-01 à clarifier** : `instance/plan/serveurs.yml` la déclare `etat: planifie`,
|
||||
alors que `CHANGELOG.md` (2026-07-03) affirme le branding « **prouvé** sur forge-01 »
|
||||
(accueil 200, `alliance.css` servi). Les deux ne peuvent pas être vrais simultanément —
|
||||
soit l'hôte a été déployé puis remis à `planifie`, soit la preuve visait autre chose.
|
||||
À trancher, puis corriger la source fautive.
|
||||
|
||||
## Prérequis
|
||||
- Dépendances `serveur_postgresql`, `serveur_nginx`, `serveur_postfix` (cf. `docs/dependances-groupes.yml`).
|
||||
|
|
|
|||
|
|
@ -1,8 +1,23 @@
|
|||
/* =========================================================================
|
||||
Alliance Boréale — accent aurore pour Forgejo.
|
||||
Surcharge UNIQUEMENT les variables de couleur (mécanisme officiel Forgejo) :
|
||||
léger, et résistant aux mises à jour (on ne touche à aucune classe interne).
|
||||
Alliance Boréale — thème aurore pour Forgejo (dépôts, wiki, issues, code).
|
||||
|
||||
DEUX SECTIONS, deux niveaux de risque assumés :
|
||||
|
||||
§1 VARIABLES (sûr) — surcharge les variables de couleur officielles de
|
||||
Forgejo. Aucune classe interne touchée : résiste aux mises à jour.
|
||||
|
||||
§2 DÉCOR (fragile) — quelques règles décoratives sur des sélecteurs
|
||||
stables (`body`, `.markup h1`…). À revérifier après chaque montée de
|
||||
version majeure de Forgejo. Supprimer §2 suffit à revenir au thème
|
||||
sobre d'origine : §1 se suffit à elle-même.
|
||||
|
||||
Le wiki n'a pas de feuille distincte : Forgejo le rend avec le même
|
||||
habillage, et `templates/custom/header.tmpl` injecte ce fichier sur
|
||||
toutes les pages.
|
||||
========================================================================= */
|
||||
|
||||
/* ============================ §1 — VARIABLES ============================ */
|
||||
|
||||
html.theme-forgejo-dark,
|
||||
html.theme-forgejo-light,
|
||||
html.theme-forgejo-auto,
|
||||
|
|
@ -23,7 +38,81 @@ html.theme-forgejo-auto,
|
|||
--color-primary-alpha-50: rgba(86, 194, 255, 0.50) !important;
|
||||
/* Accent = teal d'aurore */
|
||||
--color-accent: #4fe3c1 !important;
|
||||
|
||||
/* Palette Alliance Boréale, réutilisée en §2 */
|
||||
--ab-teal: #4fe3c1;
|
||||
--ab-cyan: #56c2ff;
|
||||
--ab-violet: #a98bff;
|
||||
--ab-rose: #ff6fc4;
|
||||
--ab-vert: #5cff9d;
|
||||
}
|
||||
|
||||
/* Petit halo aurore derrière le logo du bandeau (touche discrète) */
|
||||
/* Ciel nocturne : thème sombre uniquement, pour ne pas casser le clair. */
|
||||
html.theme-forgejo-dark,
|
||||
html.theme-forgejo-auto {
|
||||
--color-body: #070a19 !important;
|
||||
--color-box-body: #0b0f26 !important;
|
||||
--color-box-header: #0d1230 !important;
|
||||
--color-secondary: #1b2350 !important;
|
||||
--color-secondary-dark-1: #232c60 !important;
|
||||
}
|
||||
|
||||
/* ============================== §2 — DÉCOR ============================== */
|
||||
|
||||
/* Aurore fixe derrière le contenu : magenta à droite, vert fluo à gauche,
|
||||
violet en bas. Très basse opacité — une teinte, pas un motif. */
|
||||
html.theme-forgejo-dark body,
|
||||
html.theme-forgejo-auto body {
|
||||
background-image:
|
||||
radial-gradient(1100px 700px at 84% -6%, #141c4c 0%, transparent 58%),
|
||||
radial-gradient(860px 600px at 6% 0%, #0e1640 0%, transparent 55%),
|
||||
radial-gradient(760px 520px at 97% 34%, rgba(255, 111, 196, 0.075) 0%, transparent 62%),
|
||||
radial-gradient(820px 560px at 3% 70%, rgba(92, 255, 157, 0.055) 0%, transparent 62%),
|
||||
radial-gradient(700px 500px at 50% 108%, rgba(169, 139, 255, 0.06) 0%, transparent 60%);
|
||||
background-attachment: fixed;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
/* Halo aurore derrière le logo du bandeau (touche discrète) */
|
||||
.navbar .brand img { filter: drop-shadow(0 0 8px rgba(86, 194, 255, 0.45)); }
|
||||
|
||||
/* ---- Contenu rendu : wiki, README, issues, commentaires (`.markup`) ---- */
|
||||
|
||||
/* Titres : filet d'aurore sous les H1/H2, comme les séparateurs du site. */
|
||||
.markup h1,
|
||||
.markup h2 {
|
||||
border-bottom: 0 !important;
|
||||
padding-bottom: 0.34em;
|
||||
position: relative;
|
||||
}
|
||||
.markup h1::after,
|
||||
.markup h2::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
height: 1px;
|
||||
background: linear-gradient(90deg,
|
||||
rgba(92, 255, 157, 0.30),
|
||||
rgba(86, 194, 255, 0.24) 34%,
|
||||
rgba(255, 111, 196, 0.26) 68%,
|
||||
transparent);
|
||||
}
|
||||
|
||||
/* Citations : liseré aurore plutôt que le gris par défaut. */
|
||||
.markup blockquote {
|
||||
border-left: 3px solid transparent !important;
|
||||
border-image: linear-gradient(180deg, var(--ab-vert), var(--ab-cyan), var(--ab-rose)) 1 !important;
|
||||
}
|
||||
|
||||
/* Tableaux du wiki : en-tête légèrement teinté. */
|
||||
html.theme-forgejo-dark .markup table thead th,
|
||||
html.theme-forgejo-auto .markup table thead th {
|
||||
background: rgba(86, 194, 255, 0.07);
|
||||
}
|
||||
|
||||
/* Code en ligne : teal, comme les commandes des pages de présentation. */
|
||||
html.theme-forgejo-dark .markup code:not(pre code),
|
||||
html.theme-forgejo-auto .markup code:not(pre code) {
|
||||
color: var(--ab-teal);
|
||||
background: rgba(79, 227, 193, 0.08);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue