feat(projets): cartes entièrement cliquables + logos adaptatifs clair/sombre
All checks were successful
Deploy production / build-deploy (push) Successful in 30s

- ProjectCard : carte = <a> (nouvel onglet) dès qu'un lien est défini,
  focus clavier accessible, hover de l'icône piloté par la carte
- Logos en object-fit:contain sur fond --surface adaptatif (cadrage « logo entier »)
- Nouveau champ Project.imgDark + swap CSS via [data-theme] (logo blanc en sombre)
- Liens : LPLV (live, libertypourlavie.fr), KSauce (ksauce.lidge.fr), Lidge (lidge.fr)
- Lidge : description sans Jellyfin/Mail → Cloud, Vault, Git
- Logos ajoutés : Amarea, Lidge, Arboretum (clair/sombre), KSauce (+ silhouette blanche générée), Techos (paire light/dark)
This commit is contained in:
Johan LEROY
2026-06-22 10:01:36 +02:00
parent 699353910f
commit a30d26aad4
11 changed files with 41 additions and 14 deletions

View File

@@ -150,10 +150,16 @@ html[data-theme="light"] .icon-moon{display:block;}
.grid-projects.is-other{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));}
.card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:14px;background:var(--surface-2);overflow:hidden;transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease;}
.card:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:var(--shadow);}
.card-media{position:relative;height:168px;overflow:hidden;}
.card--link{cursor:pointer;text-decoration:none;color:inherit;}
.card--link:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
.card-media{position:relative;height:168px;overflow:hidden;background:var(--surface);padding:16px 20px;}
.is-other .card-media{height:140px;}
.card-media img{width:100%;height:100%;object-fit:cover;display:block;}
.card-mono{height:100%;display:flex;align-items:center;justify-content:center;background:radial-gradient(120% 130% at 0% 0%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 58%),var(--surface);}
.card-media img{width:100%;height:100%;object-fit:contain;display:block;}
/* Swap du logo selon le thème (:root = sombre → on montre la variante claire/blanche). */
.card-media--themed .logo-light{display:none;}
[data-theme="light"] .card-media--themed .logo-light{display:block;}
[data-theme="light"] .card-media--themed .logo-dark{display:none;}
.card-mono{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(120% 130% at 0% 0%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 58%),var(--surface);}
.card-mono span{font-family:var(--font-mono);font-size:44px;font-weight:700;color:var(--accent);opacity:.92;}
.is-other .card-mono span{font-size:38px;}
.card-body{padding:18px 18px 20px;display:flex;flex-direction:column;gap:11px;flex:1;}
@@ -161,8 +167,8 @@ html[data-theme="light"] .icon-moon{display:block;}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.status{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;}
.status-dot{width:7px;height:7px;border-radius:50%;}
.ext-link{color:var(--text-muted);display:inline-flex;}
.ext-link:hover{color:var(--accent);}
.ext-link{color:var(--text-muted);display:inline-flex;transition:color .25s ease;}
.card--link:hover .ext-link{color:var(--accent);}
.card-title{font-size:19px;font-weight:700;letter-spacing:-.02em;color:var(--text);}
.is-other .card-title{font-size:17px;}
.card-sub{font-family:var(--font-mono);font-size:12px;color:var(--accent);}