/* ============================================================ Visionneuse d'un souvenir (DA terracotta) L'image d'abord, la légende dessous. Fond sombre discret. ============================================================ */ .media-viewer-overlay { z-index: 2000; background: rgba(42, 38, 34, .62); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .media-viewer-card { position: relative; width: min(100%, 720px); max-height: calc(100dvh - 32px); overflow-y: auto; display: grid; gap: 0; background: var(--pz-surface); border-radius: var(--pz-r-l); box-shadow: var(--pz-shadow-lg); animation: pz-rise 240ms var(--pz-ease) both; scrollbar-width: thin; scrollbar-color: var(--pz-line) transparent; } .media-viewer-card--citation, .media-viewer-card--audio, .media-viewer-card--document { width: min(100%, 560px); } .media-viewer-close { position: absolute; top: 12px; right: 12px; z-index: 2; background: rgba(255, 255, 255, .92); box-shadow: var(--pz-shadow); } .mv-stage { padding: 12px 12px 0; } .mv-caption { display: grid; gap: 10px; padding: 18px 22px 22px; } .mv-title { margin: 0; font: 400 26px/1.15 var(--pz-serif); color: var(--pz-ink); text-wrap: balance; padding-right: 8px; } .mv-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; } .mv-person { display: inline-flex; align-items: center; gap: 8px; min-width: 0; } .mv-person-avatar { width: 28px; height: 28px; flex: none; border-radius: 50%; object-fit: cover; } .mv-person-initial { display: grid; place-items: center; background: var(--pz-a100); color: var(--pz-a700); font: 400 13px/1 var(--pz-serif); } .mv-person-name { font: 400 16px/1.2 var(--pz-serif); color: var(--pz-ink); } .mv-person-name em { font-style: italic; font-weight: 300; } .mv-person-years { font: 400 12.5px var(--pz-sans); color: var(--pz-muted); font-variant-numeric: tabular-nums; } .mv-people { display: grid; justify-items: start; gap: 8px; } .mv-people-btn { gap: 6px; } .mv-people-edit { display: grid; gap: 10px; } .mv-people-hint { margin: 0; font: 400 14px/1.45 var(--pz-sans); color: var(--pz-ink-2); } .mv-people-notice { margin: 0; font: 400 13.5px/1.45 var(--pz-sans); color: var(--pz-success); } .mv-source { margin: 0; font: 400 13px/1.5 var(--pz-sans); color: var(--pz-muted); overflow-wrap: anywhere; } .mv-source a { color: var(--pz-a700); text-underline-offset: 3px; } /* --- Skins par type --- */ /* Photo */ .media-photo-frame { overflow: hidden; border-radius: 14px; background: var(--pz-bg); } /* La boîte suit la taille rendue de l'image : les points des visages s'y posent en pourcentage */ .media-photo-frame { display: grid; place-items: center; } .mv-photo-box { position: relative; max-width: 100%; } .media-photo-frame img { max-width: 100%; max-height: 68dvh; object-fit: contain; display: block; background: var(--pz-bg); } /* Video */ .media-video-container { background: #2A2622; border-radius: 8px; padding: 2.5rem 3rem; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; min-height: 220px; position: relative; overflow: hidden; } .media-video-perfs { position: absolute; left: 8px; top: 0; bottom: 0; display: flex; flex-direction: column; justify-content: space-around; gap: 6px; padding: 10px 0; } .media-video-perfs.right { left: auto; right: 8px; } .media-video-perf { width: 8px; height: 8px; border-radius: 1px; background: rgba(255, 255, 255, 0.06); } .media-video-play { width: 64px; height: 64px; border-radius: 50%; background: rgba(255, 255, 255, 0.1); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: background 0.2s ease, transform 0.2s ease; } .media-video-play:hover { background: rgba(255, 255, 255, 0.18); transform: scale(1.05); } .media-video-play-triangle { width: 0; height: 0; border-left: 20px solid rgba(255, 255, 255, 0.7); border-top: 12px solid transparent; border-bottom: 12px solid transparent; margin-left: 5px; } .media-video-text { color: rgba(255, 255, 255, 0.35); font-size: 14px; font-weight: 500; letter-spacing: 0.5px; text-transform: uppercase; } .media-video-player { width: 100%; border-radius: 10px; background: #191817; box-shadow: 0 3px 18px rgba(42, 38, 34, 0.24); } .media-video-container--youtube { padding: 0; min-height: 280px; } .media-video-player--youtube { width: 100%; aspect-ratio: 16 / 9; border: none; border-radius: 10px; box-shadow: 0 3px 18px rgba(42, 38, 34, 0.24); } /* Audio */ .media-audio-container { background: #2A2622; border-radius: 50%; width: 180px; height: 180px; margin: 0 auto; display: flex; align-items: center; justify-content: center; position: relative; box-shadow: 0 4px 30px rgba(42, 38, 34, 0.3), inset 0 0 40px rgba(42, 38, 34, 0.2); } .media-audio-grooves { position: absolute; inset: 10px; border-radius: 50%; background: repeating-radial-gradient( circle at center, transparent 0px, transparent 4px, rgba(255, 255, 255, 0.04) 4px, rgba(255, 255, 255, 0.04) 5px ); } .media-audio-label-circle { width: 54px; height: 54px; border-radius: 50%; background: #2a2622; display: flex; align-items: center; justify-content: center; z-index: 1; } .media-audio-hole { width: 8px; height: 8px; border-radius: 50%; background: #2A2622; } .media-audio-text { text-align: center; color: #6B645D; font-size: 14px; margin-top: 1rem; font-style: italic; } .media-audio-player-wrap { margin-top: 36px; padding: 10px; border-radius: 999px; background: var(--pz-a100); } .media-audio-player { width: 100%; } /* Document */ .media-document-container { background: #FCF3EF; border-radius: 2px; padding: 2rem 1.5rem; min-height: 160px; position: relative; box-shadow: 0 2px 12px rgba(42, 38, 34, 0.08), 0 0 0 1px rgba(42, 38, 34, 0.06); } .media-document-corner { position: absolute; top: 0; right: 0; width: 28px; height: 28px; background: linear-gradient(135deg, transparent 50%, #E6E1DA 50%); } .media-document-corner::before { content: ''; position: absolute; top: 0; right: 0; width: 28px; height: 28px; background: linear-gradient(135deg, #F2EFEA 50%, transparent 50%); } .media-document-lines { display: flex; flex-direction: column; gap: 10px; margin-top: 0.5rem; } .media-document-line { height: 3px; background: rgba(42, 38, 34, 0.08); border-radius: 1px; } .media-document-line:nth-child(3) { width: 85%; } .media-document-line:nth-child(5) { width: 70%; } .media-document-line:last-child { width: 45%; } .media-document-text { text-align: center; color: #6B645D; font-size: 14px; margin-top: 1.25rem; font-style: italic; } .media-document-viewer { display: grid; gap: 10px; } .media-document-pdf { width: 100%; min-height: 430px; border: 1px solid rgba(42, 38, 34, 0.18); border-radius: 8px; background: #fff; } .media-document-actions { display: flex; justify-content: center; margin-top: 12px; } .media-document-download { color: #2a2622; font-size: 14px; font-weight: 450; text-decoration: none; border-bottom: 1px dashed rgba(42, 38, 34, 0.45); } .media-document-download:hover { color: #2a2622; border-bottom-color: rgba(42, 38, 34, 0.6); } /* Geo map */ .media-map-viewer { display: grid; gap: 10px; } .media-map-context { position: relative; height: 280px; border-radius: 10px; overflow: hidden; border: 1px solid rgba(42, 38, 34, 0.14); background: #f8e4db; } .media-map-embed { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; } .media-map-svg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; pointer-events: none; } .media-map-svg--standalone { background: linear-gradient(160deg, #edf5fc 0%, #eef7ef 100%); } .media-map-grid { fill: none; stroke: rgba(42, 38, 34, 0.12); stroke-width: 1; } .media-map-bg-center { stop-color: rgba(255, 255, 255, 0.74); } .media-map-bg-edge { stop-color: rgba(248, 228, 219, 0.84); } .media-map-trace { fill: none; stroke: #4076aa; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; } .media-map-point { fill: #4f7660; stroke: rgba(255, 255, 255, 0.85); stroke-width: 1.4; } .media-map-point-ring { fill: rgba(79, 118, 96, 0.2); } .media-map-meta { display: flex; flex-wrap: wrap; gap: 8px; } .media-map-meta span { background: rgba(255, 255, 255, 0.68); border: 1px solid rgba(42, 38, 34, 0.14); border-radius: 999px; padding: 4px 10px; color: #2a2622; font-size: 14px; } .media-map-status { color: #6b645d; font-size: 14px; text-align: center; padding: 16px; background: rgba(255, 255, 255, 0.72); border: 1px dashed rgba(42, 38, 34, 0.22); border-radius: 10px; } .media-map-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; } .media-map-open { color: #37668f; font-size: 14px; font-weight: 450; text-decoration: none; border-bottom: 1px dashed rgba(55, 102, 143, 0.45); } .media-map-open:hover { color: #2f5a7e; border-bottom-color: rgba(47, 90, 126, 0.65); } /* Citation */ .media-citation-container { margin: 44px 0 0; padding: 8px 12px 8px 22px; border-left: 2px solid var(--pz-a300); } .media-citation-text { margin: 0; font: 300 italic 26px/1.4 var(--pz-serif); color: var(--pz-ink); text-wrap: pretty; } /* Responsive */ @media (max-width: 768px) { .media-audio-container { width: 140px; height: 140px; } .mv-title { font-size: 22px; } .media-citation-text { font-size: 22px; } } /* Modifier un souvenir : crayon discret, visible au survol sur ordinateur et au focus clavier, toujours visible sur écran tactile (pointeur grossier) */ .mv-title-row { display: flex; align-items: flex-start; gap: 6px; min-width: 0; } .mv-title-row .mv-title { min-width: 0; } .mv-edit-btn { flex: none; width: 26px; height: 26px; display: inline-grid; place-items: center; margin-top: 2px; padding: 0; border: 1px solid var(--pz-a100); border-radius: 999px; background: transparent; color: var(--pz-a700); cursor: pointer; opacity: 0; transition: opacity 0.15s ease, background-color 0.15s ease; } .mv-caption:hover .mv-edit-btn, .mv-caption:focus-within .mv-edit-btn, .mv-edit-btn:focus-visible { opacity: 1; } .mv-edit-btn:hover { background: var(--pz-a100); } .mv-edit-btn:focus-visible { outline: 2px solid var(--pz-a700); outline-offset: 2px; } @media (hover: none) { .mv-edit-btn { opacity: 1; } } .mv-edit-form { display: grid; gap: 12px; } .mv-edit-field { display: grid; gap: 4px; } .mv-edit-label { font: 400 12.5px var(--pz-sans); color: var(--pz-muted); } .mv-edit-title, .mv-edit-quote, .mv-edit-select { width: 100%; box-sizing: border-box; padding: 8px 12px; border: 1px solid var(--pz-a100); border-radius: 10px; background: #fff; color: var(--pz-ink); font: 400 16px/1.3 var(--pz-sans); } .mv-edit-title { font-family: var(--pz-serif); font-size: 22px; } .mv-edit-quote { font-family: var(--pz-serif); font-size: 18px; resize: vertical; } .mv-edit-error { margin: 0; font: 400 13px var(--pz-sans); color: var(--pz-a700); } .mv-edit-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }