Thème login Keycloak : corriger fond, constellation et champs (vrais sélecteurs KC 26)

Le thème "keycloak" de KC 26 est PatternFly (body sans classe, .pf-c-*).
Corrections : fond gris par défaut sur .login-pf-page effacé (transparent),
ciel aurore remonté (z-index 0, sous le contenu z-index 1) → la constellation
s'affiche ; champs ciblés en .pf-c-form-control !important (le mot de passe
n'était plus blanc) ; carte/bouton/liens en !important.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-07-04 00:07:49 -04:00
parent 987ba88644
commit c5434bb33c

View file

@ -1,7 +1,7 @@
/* ========================================================================= /* =========================================================================
Alliance Boréale thème de connexion Keycloak Alliance Boréale thème de connexion Keycloak
Identité : aurore boréale · étoiles · constellation · ciel nocturne souverain. Identité : aurore boréale · étoiles · constellation · ciel nocturne souverain.
Police système (souveraineté, aucune dépendance externe). Cible le thème "keycloak" de KC 26 (PatternFly : .pf-c-*, .login-pf-page, .card-pf).
========================================================================= */ ========================================================================= */
:root { :root {
--bg: #05060f; --bg: #05060f;
@ -17,28 +17,32 @@
Ubuntu, Cantarell, "Noto Sans", "Helvetica Neue", Arial, sans-serif; Ubuntu, Cantarell, "Noto Sans", "Helvetica Neue", Arial, sans-serif;
} }
/* ---------- Ciel nocturne : aurore en fond ---------- */ /* ---------- Ciel nocturne aurore : on efface le fond gris par défaut ---------- */
html { height: 100%; } html, body {
body.login-pf,
body {
height: 100%; height: 100%;
font-family: var(--font); font-family: var(--font);
color: var(--ink); color: var(--ink);
background: background: #05060f !important;
radial-gradient(1200px 700px at 80% -10%, #131a44 0%, transparent 60%), }
radial-gradient(900px 600px at 10% 0%, #0e1640 0%, transparent 55%), .login-pf-page,
linear-gradient(180deg, var(--bg-2) 0%, var(--bg) 70%) fixed; body .login-pf-page {
background: transparent !important;
position: relative;
z-index: 1;
padding-top: 40px;
} }
.login-pf-page { padding-top: 40px; background: transparent; }
#kc-container, #kc-container-wrapper, .login-pf-page .card-pf { position: relative; }
/* ---------- Ciel animé : constellation + aurore (injecté par constellation.js) ---------- */ /* ---------- Ciel animé : constellation + aurore (injecté par constellation.js) ---------- */
.ab-sky { .ab-sky {
position: fixed; position: fixed;
inset: 0; inset: 0;
z-index: -1; z-index: 0; /* au-dessus du fond, sous le contenu (z-index:1) */
overflow: hidden; overflow: hidden;
pointer-events: none; pointer-events: none;
background:
radial-gradient(1200px 700px at 80% -10%, #131a44 0%, transparent 60%),
radial-gradient(900px 600px at 10% 0%, #0e1640 0%, transparent 55%),
linear-gradient(180deg, var(--bg-2) 0%, var(--bg) 70%);
} }
.ab-sky canvas { .ab-sky canvas {
position: absolute; position: absolute;
@ -63,12 +67,9 @@ body {
from { transform: translateX(-3%) translateY(0) scale(1); } from { transform: translateX(-3%) translateY(0) scale(1); }
to { transform: translateX(3%) translateY(2%) scale(1.08); } to { transform: translateX(3%) translateY(2%) scale(1.08); }
} }
@media (prefers-reduced-motion: reduce) { @media (prefers-reduced-motion: reduce) { .ab-aurora { animation: none; } }
.ab-aurora { animation: none; }
}
/* ---------- En-tête + logo étoile aurore ---------- */ /* ---------- En-tête + logo étoile aurore ---------- */
#kc-header,
#kc-header-wrapper { #kc-header-wrapper {
color: var(--ink); color: var(--ink);
font-size: 1.6rem; font-size: 1.6rem;
@ -76,9 +77,7 @@ body {
letter-spacing: 0.5px; letter-spacing: 0.5px;
text-transform: none; text-transform: none;
} }
.login-pf-page .login-pf-header { .login-pf-page .login-pf-header { text-align: center; }
text-align: center;
}
.login-pf-page .login-pf-header::before { .login-pf-page .login-pf-header::before {
content: ""; content: "";
display: block; display: block;
@ -91,67 +90,53 @@ body {
/* ---------- Carte de connexion (glassmorphism) ---------- */ /* ---------- Carte de connexion (glassmorphism) ---------- */
.card-pf { .card-pf {
background: var(--panel); background: var(--panel) !important;
border: 1px solid var(--border); border: 1px solid var(--border) !important;
border-radius: 16px; border-radius: 16px !important;
box-shadow: 0 18px 50px rgba(0, 0, 0, 0.45); box-shadow: 0 18px 50px rgba(0, 0, 0, 0.45);
backdrop-filter: blur(10px); backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
padding: 2rem 2.2rem 2.4rem;
} }
/* ---------- Titres, libellés, texte ---------- */ /* ---------- Titres, libellés, texte ---------- */
#kc-page-title, #kc-page-title,
.login-pf-page .login-pf-signup a, label, .control-label, .pf-c-form__label, .pf-c-form__label-text,
label, .login-pf-page .login-pf-header h1 { color: var(--ink) !important; }
.control-label, p, .instruction, #kc-info-message, #kc-info, #kc-info-wrapper { color: var(--ink-dim) !important; }
#kc-form-options,
.login-pf-page label { color: var(--ink); }
.login-pf-page .login-pf-header h1 { color: var(--ink); }
p, .instruction, #kc-info-message { color: var(--ink-dim); }
/* ---------- Champs ---------- */ /* ---------- Champs (PatternFly : .pf-c-form-control) ---------- */
input.form-control,
.pf-c-form-control, .pf-c-form-control,
.form-control { input.pf-c-form-control,
background: rgba(255, 255, 255, 0.06); .pf-c-input-group,
border: 1px solid rgba(255, 255, 255, 0.14); input[type="text"], input[type="password"], input[type="email"] {
color: var(--ink); background: rgba(255, 255, 255, 0.06) !important;
border-radius: 10px; border: 1px solid rgba(255, 255, 255, 0.16) !important;
color: var(--ink) !important;
border-radius: 10px !important;
} }
input.form-control:focus, .pf-c-form-control:focus,
.form-control:focus { input:focus {
border-color: var(--aurora-cyan); border-color: var(--aurora-cyan) !important;
box-shadow: 0 0 0 3px rgba(86, 194, 255, 0.25); box-shadow: 0 0 0 3px rgba(86, 194, 255, 0.25) !important;
background: rgba(255, 255, 255, 0.09);
} }
input.form-control::placeholder { color: var(--ink-dim); } .pf-c-form-control::placeholder { color: var(--ink-dim) !important; }
/* le bouton "afficher le mot de passe" dans l'input-group */
.pf-c-input-group .pf-c-button { background: transparent !important; color: var(--ink-dim) !important; }
/* ---------- Bouton primaire : ruban d'aurore ---------- */ /* ---------- Bouton primaire : ruban d'aurore ---------- */
.btn-primary,
input.btn-primary,
.pf-c-button.pf-m-primary, .pf-c-button.pf-m-primary,
#kc-login { input.btn-primary, .btn-primary, #kc-login {
background: linear-gradient(100deg, var(--aurora-teal), var(--aurora-cyan)) !important; background: linear-gradient(100deg, var(--aurora-teal), var(--aurora-cyan)) !important;
color: #04121a !important; color: #04121a !important;
border: none !important; border: none !important;
border-radius: 999px !important; border-radius: 999px !important;
font-weight: 600 !important; font-weight: 600 !important;
box-shadow: 0 10px 30px rgba(79, 227, 193, 0.28); box-shadow: 0 10px 30px rgba(79, 227, 193, 0.28);
transition: transform 0.15s ease, box-shadow 0.2s ease;
} }
.btn-primary:hover, .pf-c-button.pf-m-primary:hover, #kc-login:hover {
#kc-login:hover {
transform: translateY(-2px);
box-shadow: 0 14px 38px rgba(86, 194, 255, 0.4); box-shadow: 0 14px 38px rgba(86, 194, 255, 0.4);
} }
/* ---------- Liens ---------- */ /* ---------- Liens ---------- */
a, a:visited { color: var(--aurora-cyan); } a, a:visited { color: var(--aurora-cyan) !important; }
a:hover { color: var(--aurora-violet); } a:hover { color: var(--aurora-violet) !important; }
/* ---------- Alertes ---------- */
.alert { border-radius: 12px; border: 1px solid var(--border); }
/* ---------- Bas de page ---------- */
#kc-info, #kc-info-wrapper { color: var(--ink-dim); }