diff --git a/css/style.css b/css/style.css index 00a8ba5..11c7a7e 100644 --- a/css/style.css +++ b/css/style.css @@ -292,6 +292,14 @@ input[type="range"]::-webkit-slider-thumb { text-align: center; } .auth-hint:empty { display: none; } +/* Le cyan de .auth-hint dit "voici l'etat des choses" (session expiree, + coffre verrouille). Un refus n'est pas un etat, c'est un echec : il se + distingue a la couleur avant d'etre lu. */ +.auth-hint.is-error { + background: var(--danger-soft); + border-color: var(--danger); + color: var(--danger); +} /* Tag chip input */ .chip-input { diff --git a/js/app.js b/js/app.js index 9f43bc0..6bd58b3 100644 --- a/js/app.js +++ b/js/app.js @@ -6957,9 +6957,11 @@ async function ensureLicence() { e.preventDefault(); const key = input.value.trim(); if (!key) return; + hint.classList.remove('is-error'); hint.textContent = 'Checking…'; const res = await Bridge.licence('activate', key); if (!res.ok) { + hint.classList.add('is-error'); // Une clé refusée ne dit pas POURQUOI : signature invalide, // recopie fautive et charge utile trafiquée se ressemblent, et // détailler n'aiderait que celui qui essaie d'en fabriquer une.