From ff496d1d2dd41a01f2f2952fe84207a73942acd0 Mon Sep 17 00:00:00 2001 From: Etienne Delvarre Date: Wed, 3 Jun 2026 13:33:52 +0200 Subject: [PATCH] Personnages: portrait image, scene list moved to modal, card shows count only - Add portrait upload (reuses ressource-upload endpoint) - Card shows portrait image, truncated description, scene count badge - Modal shows full detail + scene list grouped by acte with links - Removes long scene list from card preview Co-Authored-By: Claude Opus 4.6 --- public/index.html | 196 ++++++++++++++++++++++++++++++---------------- 1 file changed, 129 insertions(+), 67 deletions(-) diff --git a/public/index.html b/public/index.html index 5d2fef7..3ea67c8 100644 --- a/public/index.html +++ b/public/index.html @@ -233,10 +233,6 @@ window.dispatchEvent(new Event('tiptap-loaded')); .perso-card-text { font-size: 14px; color: var(--text-muted); line-height: 1.5; } .perso-card-text p { margin: 0 0 4px; } .perso-card-text ul, .perso-card-text ol { margin: 0 0 4px; padding-left: 18px; } - .perso-card-scenes { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border-light); } - .perso-card-scenes a { font-size: 13px; color: var(--accent); text-decoration: none; cursor: pointer; } - .perso-card-scenes a:hover { text-decoration: underline; color: var(--accent-hover); } - .perso-card-scenes-list { display: flex; flex-wrap: wrap; gap: 4px 10px; } /* Tags input */ .tags-input-container { display: flex; flex-wrap: wrap; gap: 6px; padding: 6px 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-input); align-items: center; min-height: 36px; } @@ -491,13 +487,22 @@ window.dispatchEvent(new Event('tiptap-loaded')); .page-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px; } .page-header h2 { font-family: 'Playfair Display', serif; font-size: 28px; font-weight: 600; margin: 0; } - .perso-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; } - .perso-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 20px; cursor: pointer; transition: box-shadow 0.15s; } + .perso-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 20px; } + .perso-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; cursor: pointer; transition: box-shadow 0.15s; } .perso-card:hover { box-shadow: 0 4px 14px var(--shadow-hover); } + .perso-card-portrait { width: 100%; height: 200px; object-fit: cover; background: var(--bg-alt); } + .perso-card-body { padding: 16px 20px; } .perso-card-name { font-family: 'Playfair Display', serif; font-size: 20px; font-weight: 600; margin-bottom: 4px; } .perso-card-role { font-size: 14px; color: var(--accent); margin-bottom: 8px; font-weight: 500; } - .perso-card-desc { font-size: 14px; color: var(--text-muted); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; } + .perso-card-desc { font-size: 14px; color: var(--text-muted); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } .perso-card-tags { margin-top: 10px; display: flex; gap: 6px; flex-wrap: wrap; } + .perso-card-scene-count { margin-top: 10px; font-size: 12px; color: var(--text-hint); text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; } + .perso-modal-scenes { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); } + .perso-modal-scenes-title { font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-hint); font-weight: 600; margin-bottom: 8px; } + .perso-modal-scenes-acte { font-size: 11px; color: var(--accent); font-weight: 600; margin-top: 8px; margin-bottom: 4px; text-transform: uppercase; letter-spacing: 0.3px; } + .perso-modal-scenes-list { display: flex; flex-direction: column; gap: 2px; } + .perso-modal-scenes-list a { font-size: 13px; color: var(--text); text-decoration: none; cursor: pointer; padding: 2px 0; } + .perso-modal-scenes-list a:hover { color: var(--accent); } .res-filters { display: flex; gap: 12px; align-items: center; margin-bottom: 20px; flex-wrap: wrap; } .res-filters select, .res-filters input { padding: 6px 10px; border: 1px solid var(--border); border-radius: 8px; font-size: 13px; font-family: 'Lora', serif; color: var(--text); background: var(--bg-input); outline: none; } @@ -797,10 +802,12 @@ window.dispatchEvent(new Event('tiptap-loaded'));