mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-06-25 16:19:19 +02:00
style: standardise links to Regular weight (400) with violet accent hover, body to Light (300)
This commit is contained in:
22
TODO.md
22
TODO.md
@@ -1,23 +1,3 @@
|
|||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
- [x] Fix htmx checkbox "Activer la restriction d'accès": add missing csrf_token in #fieldset-restrictions (fixes token invalide + full parametres.php injection)
|
- [x] Standardise all links (including header) to be heavy (font-weight: 600) and add violet accent color on hover
|
||||||
|
|
||||||
- [x] Convert all file inputs to FilePond (CSV import, file-field.php; fix dialog init + missing CSS/JS on index page)
|
|
||||||
- [x] Fix `account.php`: replace `!==` CSRF token check with `hash_equals` (constant-time comparison)
|
|
||||||
- [x] Fix `ShareLink::setPassword()`: also encrypt and store plain-text password, matching `create()` behavior
|
|
||||||
- [x] Audit: confirm all remaining credential comparison sites use constant-time `hash_equals` or `password_verify`
|
|
||||||
- [x] Fix `.gitignore`: anchor `vendor/` to root (`/vendor/`) so `app/public/assets/js/vendor/` (htmx, OverType, FilePond) is tracked
|
|
||||||
- [x] Fix migration `025_lowercase_languages.sql`: deduplicate languages before LOWER() to avoid UNIQUE constraint violation (`Néerlandais`/`néerlandais`)
|
|
||||||
- [x] Fix home page: load ALL published theses grouped by year (desc), shuffled randomly within each year (instead of only ~20 from latest year)
|
|
||||||
- [x] Répertoire: colonnes à largeurs différenciées (Années plus étroites, Orientations/AP plus larges)
|
|
||||||
- [x] Répertoire: barres de scroll discrètes (thin + semi-transparentes)
|
|
||||||
- [x] Répertoire: fontes/graisses conformes à la maquette (Ductus pour titres colonnes, années en bold, etc.)
|
|
||||||
- [x] Répertoire: diminutifs des AP entre crochets (ex: Design et Politique du Multiple [DPM])
|
|
||||||
- [x] Page TFE: enlever le soulignage de tous les mots/liens
|
|
||||||
- [x] Page TFE: harmoniser minuscules pour mots-clés, langues & formats
|
|
||||||
- [x] Page TFE: corriger texte inclusif ("utilisateur·ices autorisé·es")
|
|
||||||
- [x] Page TFE: empêcher les mots-clés de se couper au milieu du mot lors du wrapping
|
|
||||||
- [x] Page TFE: rendre le texte des TFE internes/interdits éditable dans les paramètres
|
|
||||||
- [x] Page TFE: afficher CC2r en plus de la licence choisie (ex: "CC2r, CC BY")
|
|
||||||
- [x] Page TFE: formater le contact au plus court (stripper https://www., afficher @identifiant pour Instagram/Mastodon)
|
|
||||||
- [x] Page TFE: supprimer le lien de téléchargement du PDF sous l'iframe
|
|
||||||
|
|||||||
@@ -109,7 +109,7 @@
|
|||||||
|
|
||||||
.admin-back-btn:hover {
|
.admin-back-btn:hover {
|
||||||
background: var(--bg-secondary);
|
background: var(--bg-secondary);
|
||||||
color: var(--text-primary);
|
color: var(--accent-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.admin-back-btn svg {
|
.admin-back-btn svg {
|
||||||
@@ -1543,7 +1543,12 @@ th.admin-ap-col {
|
|||||||
.admin-cancel-link {
|
.admin-cancel-link {
|
||||||
font-size: var(--step--1);
|
font-size: var(--step--1);
|
||||||
color: var(--text-secondary);
|
color: var(--text-secondary);
|
||||||
text-decoration: underline;
|
text-decoration: none;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.admin-cancel-link:hover {
|
||||||
|
color: var(--accent-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Pagination (admin list) ─────────────────────────────────────────────── */
|
/* ── Pagination (admin list) ─────────────────────────────────────────────── */
|
||||||
@@ -1574,6 +1579,7 @@ th.admin-ap-col {
|
|||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
font-size: var(--step--1);
|
font-size: var(--step--1);
|
||||||
|
font-weight: 400;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
transition:
|
transition:
|
||||||
border-color 0.15s,
|
border-color 0.15s,
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.apropos-toc ul a:hover {
|
.apropos-toc ul a:hover {
|
||||||
color: var(--text-primary);
|
color: var(--accent-primary);
|
||||||
border-left-color: var(--accent-primary);
|
border-left-color: var(--accent-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,7 +84,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.apropos-toc-erg a:hover {
|
.apropos-toc-erg a:hover {
|
||||||
opacity: 0.75;
|
color: var(--accent-primary);
|
||||||
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.apropos-toc-source {
|
.apropos-toc-source {
|
||||||
@@ -99,7 +100,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.apropos-toc-source a:hover {
|
.apropos-toc-source a:hover {
|
||||||
opacity: 0.75;
|
color: var(--accent-primary);
|
||||||
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------ */
|
||||||
@@ -237,7 +239,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.apropos-contact-card a:hover {
|
.apropos-contact-card a:hover {
|
||||||
opacity: 0.75;
|
color: var(--accent-primary);
|
||||||
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------ */
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ html, body {
|
|||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: var(--font-body);
|
font-family: var(--font-body);
|
||||||
|
font-weight: 300;
|
||||||
background: var(--bg-primary);
|
background: var(--bg-primary);
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
background: linear-gradient(
|
background: linear-gradient(
|
||||||
|
|||||||
@@ -19,8 +19,9 @@ details {
|
|||||||
summary {
|
summary {
|
||||||
font-family: var(--font-display);
|
font-family: var(--font-display);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
text-decoration: 1px wavy;
|
text-decoration: none;
|
||||||
color: var(--accent-secondary);
|
color: var(--accent-secondary);
|
||||||
|
transition: color 0.15s;
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
fill: var(--accent-secondary);
|
fill: var(--accent-secondary);
|
||||||
@@ -28,3 +29,7 @@ summary {
|
|||||||
height: 1.4em;
|
height: 1.4em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
summary:hover {
|
||||||
|
color: var(--accent-primary);
|
||||||
|
}
|
||||||
|
|||||||
@@ -51,13 +51,14 @@ header nav ul a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
header nav ul a:hover {
|
header nav ul a:hover {
|
||||||
opacity: 1;
|
color: var(--accent-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
header nav ul a[aria-current="page"] {
|
header nav ul a[aria-current="page"] {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
border-bottom: 1px solid var(--header-nav-active-border);
|
border-bottom: 1px solid var(--header-nav-active-border);
|
||||||
padding-bottom: 1px;
|
padding-bottom: 1px;
|
||||||
|
color: var(--accent-foreground);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Logo ───────────────────────────────────────────────────────────── */
|
/* ── Logo ───────────────────────────────────────────────────────────── */
|
||||||
|
|||||||
@@ -6,10 +6,10 @@
|
|||||||
a {
|
a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
text-decoration-line: underline;
|
color: var(--accent-primary);
|
||||||
text-decoration-style: wavy;
|
text-decoration: none;
|
||||||
text-decoration-thickness: 1px;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
font-size: var(--step--1);
|
font-size: var(--step--1);
|
||||||
|
font-weight: 400;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
transition: border-color 0.15s, color 0.15s;
|
transition: border-color 0.15s, color 0.15s;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,13 @@
|
|||||||
|
|
||||||
.toast--warning a {
|
.toast--warning a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
text-decoration: underline;
|
font-weight: 400;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: color 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toast--warning a:hover {
|
||||||
|
color: var(--accent-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes toast-enter {
|
@keyframes toast-enter {
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.access-req-tab:hover {
|
.access-req-tab:hover {
|
||||||
color: var(--text-primary);
|
color: var(--accent-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.access-req-tab.active {
|
.access-req-tab.active {
|
||||||
@@ -163,7 +163,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.access-req-card__info a:hover {
|
.access-req-card__info a:hover {
|
||||||
text-decoration: underline;
|
color: var(--accent-primary);
|
||||||
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.access-req-card__justification,
|
.access-req-card__justification,
|
||||||
@@ -224,8 +225,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.access-req-pagination__link:hover {
|
.access-req-pagination__link:hover {
|
||||||
color: var(--accent-secondary);
|
color: var(--accent-primary);
|
||||||
text-decoration: underline;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.access-req-pagination__info {
|
.access-req-pagination__info {
|
||||||
|
|||||||
@@ -419,12 +419,14 @@
|
|||||||
background: var(--text-primary);
|
background: var(--text-primary);
|
||||||
color: var(--bg-primary);
|
color: var(--bg-primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
font-weight: 400;
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
transition: opacity 0.15s;
|
transition: opacity 0.15s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.share-error a:hover {
|
.share-error a:hover {
|
||||||
opacity: 0.8;
|
color: var(--accent-primary);
|
||||||
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Password gate page ─────────────────────────────────────────────────── */
|
/* ── Password gate page ─────────────────────────────────────────────────── */
|
||||||
@@ -1416,8 +1418,7 @@ legend {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.recap-files-name a:hover {
|
.recap-files-name a:hover {
|
||||||
text-decoration: underline;
|
color: var(--accent-primary);
|
||||||
color: var(--accent);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.recap-files-peertube-id {
|
.recap-files-peertube-id {
|
||||||
@@ -1527,7 +1528,7 @@ legend {
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.file-browser-breadcrumb a:hover {
|
.file-browser-breadcrumb a:hover {
|
||||||
text-decoration: underline;
|
color: var(--accent-primary);
|
||||||
}
|
}
|
||||||
.file-browser-sep {
|
.file-browser-sep {
|
||||||
color: var(--text-tertiary);
|
color: var(--text-tertiary);
|
||||||
|
|||||||
@@ -191,6 +191,7 @@
|
|||||||
|
|
||||||
.clear-filter:hover {
|
.clear-filter:hover {
|
||||||
background: var(--accent-secondary);
|
background: var(--accent-secondary);
|
||||||
|
color: var(--accent-foreground);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pagination */
|
/* Pagination */
|
||||||
@@ -222,6 +223,7 @@
|
|||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
font-size: var(--step--1);
|
font-size: var(--step--1);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
font-weight: 400;
|
||||||
transition: all 0.15s;
|
transition: all 0.15s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -282,8 +282,14 @@
|
|||||||
.search-reset-link {
|
.search-reset-link {
|
||||||
font-size: var(--step--1);
|
font-size: var(--step--1);
|
||||||
color: var(--text-secondary);
|
color: var(--text-secondary);
|
||||||
text-decoration: underline;
|
text-decoration: none;
|
||||||
|
font-weight: 400;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
transition: color 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-reset-link:hover {
|
||||||
|
color: var(--accent-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Search results pagination */
|
/* Search results pagination */
|
||||||
@@ -307,6 +313,7 @@
|
|||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
font-size: var(--step--1);
|
font-size: var(--step--1);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
font-weight: 400;
|
||||||
transition: all 0.15s;
|
transition: all 0.15s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
transition: color .15s, border-color .15s;
|
transition: color .15s, border-color .15s;
|
||||||
}
|
}
|
||||||
.sys-tab:hover {
|
.sys-tab:hover {
|
||||||
color: var(--text-primary);
|
color: var(--accent-primary);
|
||||||
}
|
}
|
||||||
.sys-tab.active {
|
.sys-tab.active {
|
||||||
color: var(--accent-primary);
|
color: var(--accent-primary);
|
||||||
@@ -327,7 +327,7 @@
|
|||||||
color: var(--accent-primary);
|
color: var(--accent-primary);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.sys-refresh-note a:hover { text-decoration: underline; }
|
.sys-refresh-note a:hover { color: var(--accent-primary); }
|
||||||
|
|
||||||
/* ── Cache freshness badges ────────────────────────────────────────────── */
|
/* ── Cache freshness badges ────────────────────────────────────────────── */
|
||||||
.sys-cache-badge {
|
.sys-cache-badge {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tfe-meta-label {
|
.tfe-meta-label {
|
||||||
font-weight: 400;
|
font-weight: 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tfe-meta-item a {
|
.tfe-meta-item a {
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tfe-meta-item a:hover {
|
.tfe-meta-item a:hover {
|
||||||
text-decoration: none;
|
color: var(--accent-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note field: align label to top, value in italics */
|
/* Note field: align label to top, value in italics */
|
||||||
@@ -190,7 +190,7 @@ aside figcaption {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tfe-pdf-fallback a:hover {
|
.tfe-pdf-fallback a:hover {
|
||||||
text-decoration: none;
|
color: var(--accent-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "Not available" and "no files" notices */
|
/* "Not available" and "no files" notices */
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
padding: var(--space-2xs) var(--space-s);
|
padding: var(--space-2xs) var(--space-s);
|
||||||
background: var(--accent-primary);
|
background: var(--accent-primary);
|
||||||
color: var(--text-primary);
|
color: var(--accent-foreground);
|
||||||
font-size: var(--step--1);
|
font-size: var(--step--1);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@@ -35,6 +35,11 @@
|
|||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.skip-link:hover {
|
||||||
|
color: var(--accent-primary);
|
||||||
|
background: var(--accent-foreground);
|
||||||
|
}
|
||||||
|
|
||||||
/* Respect user motion preferences */
|
/* Respect user motion preferences */
|
||||||
@media (prefers-reduced-motion: reduce) {
|
@media (prefers-reduced-motion: reduce) {
|
||||||
*,
|
*,
|
||||||
|
|||||||
Reference in New Issue
Block a user