LesDioscures.com

More results...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
2426AU — Denier Auguste · RIC 145 · LesDioscures
L'id de "mount" doit être UNIQUE sur la page (dio-2473, dio-2474, …). Le bloc "cote" est optionnel : présent -> affiché, absent -> masqué. ============================================================ */ (function () { if (window.__dioscuresMoteur) return; /* idempotent : ne s'initialise qu'une fois */ window.__dioscuresMoteur = true; window.__DIO = window.__DIO || []; var FALLBACK_IMG = 'https://lesdioscures.com/wp-content/uploads/2024/05/Capturerf-removebg-preview.png'; var DEFAULT_COULEURS = ["#0a1a6e","#102080","#1a3a9e","#1a5ab0","#1a8aaa", "#4aaa60","#9ec020","#e09010","#e05010","#cc1a1a","#aa0000"]; /* ---------- Injection du CSS (une seule fois) ---------- */ function injectCss() { if (document.getElementById('dioscures-css')) return; var s = document.createElement('style'); s.id = 'dioscures-css'; s.textContent = ` ::selection { background: transparent; color: inherit; } ::-moz-selection { background: transparent; color: inherit; } :root { --night:#0e1520; --night-mid:#162035; --night-soft:#1e2d47; --night-panel:#111827; --silver:#c8d6e5; --silver-dim:#8fa3bb; --silver-pale:#dce8f2; --accent:#a8c4d8; --accent-glow:#5b8fa8; --rule:#2e4a66; --rule-bright:#4a7096; --text-main:#dce8f2; --text-mid:#a8bfcf; --text-soft:#6a8599; --link-color:#f5d000; } .dioscures-module a, #lb-overlay a { color: var(--link-color) !important; } .dioscures-module a:hover, #lb-overlay a:hover { color: #ffe55c !important; } * { box-sizing: border-box; margin: 0; padding: 0; } .dioscures-module { font-family: 'Playfair Display', Georgia, serif; background: var(--night); color: var(--text-main); max-width: 900px; margin: 0 auto; position: relative; overflow: hidden; } .dioscures-module::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(to right, transparent, var(--accent-glow), var(--silver), var(--accent-glow), transparent); z-index: 1; } .module-inner { padding: 60px 48px; } .coin-header { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 22px; margin-bottom: 46px; } .header-rule { height: 1px; background: linear-gradient(to right, transparent, var(--rule-bright)); } .header-rule.left { background: linear-gradient(to left, transparent, var(--rule-bright)); } .header-center { text-align: center; } .coin-title { font-family: 'Cinzel', serif; font-size: 25.3px; font-weight: 600; letter-spacing: 3px; color: var(--silver-pale); text-transform: uppercase; line-height: 1.3; } .coin-subtitle { font-size: 14.9px; font-style: italic; color: var(--text-soft); margin-top: 8px; letter-spacing: 1.5px; } .coin-photo-block { text-align: center; margin-bottom: 40px; } .coin-photo-block--hero { position: relative; } .coin-photo-frame { display: inline-block; position: relative; padding: 24px; } .coin-photo-frame::before, .coin-photo-frame::after { content: ''; position: absolute; width: 40px; height: 40px; border-color: var(--rule-bright); border-style: solid; } .coin-photo-frame::before { top: 0; left: 0; border-width: 1px 0 0 1px; } .coin-photo-frame::after { bottom: 0; right: 0; border-width: 0 1px 1px 0; } .coin-photo { max-width: 380px; max-height: 380px; width: auto; height: auto; filter: drop-shadow(0 6px 32px rgba(91,143,168,0.25)); transition: transform 0.4s ease; } .coin-photo:hover { transform: scale(1.04); } .coin-photo-caption { font-size: 13.2px; font-style: italic; color: var(--text-soft); margin-top: 14px; letter-spacing: 0.5px; } .coin-photo-caption a { color: var(--accent); text-decoration: none; border-bottom: 1px solid rgba(168,196,216,0.4); } .coin-photo-caption a:hover { color: var(--silver-pale); } .fichabar { display: flex; border: 1px solid var(--rule); margin-bottom: 36px; } .ficha-item { flex: 1; display: flex; flex-direction: column; align-items: center; padding: 14px 10px; border-right: 1px solid var(--rule); gap: 5px; } .ficha-item:last-child { border-right: none; } .ficha-label { font-family: 'Cinzel', serif; font-size: 9.2px; letter-spacing: 2.5px; color: var(--text-soft); text-transform: uppercase; } .ficha-val { font-size: 16.1px; color: var(--silver-pale); font-style: italic; } .legend-box { display: flex; gap: 1px; background: var(--rule); border: 1px solid var(--rule); margin-bottom: 46px; } .legend-face { flex: 1; background: var(--night-panel); padding: 22px 26px; } .legend-face-label { font-family: 'Cinzel', serif; font-size: 9.2px; letter-spacing: 3px; color: var(--accent-glow); text-transform: uppercase; margin-bottom: 12px; } .legend-face-text { font-family: 'Cinzel', serif; font-size: 18.4px; letter-spacing: 2.5px; color: var(--silver-pale); margin-bottom: 8px; line-height: 1.4; } .legend-face-developpee { font-size: 13.8px; font-style: italic; color: var(--text-mid); margin-bottom: 8px; } .legend-face-trans { font-size: 14.9px; font-style: italic; color: var(--accent); margin-bottom: 10px; } .legend-face-desc { font-size: 14.4px; color: var(--text-soft); line-height: 1.6; } .body-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px 44px; } section.text-section { border-left: 2px solid var(--rule); padding-left: 22px; } section.text-section.section-full { grid-column: 1 / -1; border-left: none; padding-left: 0; border-top: 1px solid var(--rule); padding-top: 30px; } .section-sigil { font-size: 11.5px; color: var(--accent-glow); display: block; margin-bottom: 10px; } .section-title { font-family: 'Cinzel', serif; font-size: 13.8px; letter-spacing: 2.5px; color: var(--silver-dim); text-transform: uppercase; margin-bottom: 18px; line-height: 1.5; } .section-body p { font-size: 16.7px; line-height: 1.85; color: var(--text-mid); margin-bottom: 16px; } .section-body p:last-child { margin-bottom: 0; } .section-body strong { color: var(--silver-pale); font-weight: 600; } .section-body em { font-style: italic; color: var(--text-main); } .section-body sup { font-size: 0.7em; } .pull-quote { grid-column: 1 / -1; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); padding: 32px 0; text-align: center; position: relative; } .pull-quote::before { content: '❧'; font-size: 32.2px; color: var(--accent-glow); display: block; margin-bottom: 16px; opacity: 0.6; } .pull-quote p { font-family: 'IM Fell English', Georgia, serif; font-size: 20.7px; font-style: italic; color: var(--silver-pale); line-height: 1.7; max-width: 640px; margin: 0 auto 12px; } .pull-quote cite { font-family: 'Cinzel', serif; font-size: 10.3px; letter-spacing: 2px; color: var(--text-soft); font-style: normal; } .pull-quote-traduction { font-family: 'IM Fell English', Georgia, serif; font-size: 14.9px; font-style: italic; color: var(--text-soft); margin-top: 12px !important; margin-bottom: 0 !important; opacity: 0.75; } .rarete-block { display: flex; align-items: flex-start; gap: 20px; border: 1px solid var(--rule); padding: 22px 20px; background: var(--night-panel); position: relative; overflow: hidden; grid-column: 1 / -1; } .rarete-block::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(to right, transparent, var(--accent-glow), transparent); } .rarete-score-badge { flex-shrink: 0; width: 74px; height: 74px; border: 2px solid; border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1; } .rarete-score-num { font-family: 'Cinzel', serif; font-size: 29.9px; font-weight: 600; } .rarete-score-max { font-family: 'Cinzel', serif; font-size: 9.2px; letter-spacing: 1px; color: var(--text-soft); margin-top: 3px; } .rarete-right { flex: 1; } .rarete-title { font-family: 'Cinzel', serif; font-size: 9.2px; letter-spacing: 3px; color: var(--text-soft); text-transform: uppercase; display: block; margin-bottom: 6px; } .rarete-label-big { font-size: 17.2px; color: var(--silver-pale); font-style: italic; margin-bottom: 14px; } .rarete-pip-row { display: flex; gap: 3px; margin-bottom: 8px; align-items: center; } .rarete-pip { flex: 1; height: 10px; background: rgba(46,74,102,0.3); border: 1px solid var(--rule); } .rarete-pip.rarete-pip-current { position: relative; height: 16px; margin-top: -3px; } .rarete-pip.rarete-pip-current::after { position: absolute; top: -20px; left: 50%; transform: translateX(-50%); font-family: 'Cinzel', serif; font-size: 12.6px; font-weight: 600; white-space: nowrap; } .rarete-pip.inactive { background: rgba(46,74,102,0.15) !important; border-color: var(--rule) !important; opacity: 0.35; } .rarete-scale-labels { display: flex; justify-content: space-between; margin-bottom: 14px; } .rarete-scale-labels span { font-family: 'Cinzel', serif; font-size: 9.2px; color: var(--text-soft); letter-spacing: 1px; } .rarete-desc { font-size: 14.4px; color: var(--text-soft); font-style: italic; line-height: 1.55; } .rarete-link { font-family: 'Cinzel', serif; font-size: 9.2px; letter-spacing: 1.5px; color: var(--silver-pale); text-decoration: none; border-bottom: 1px solid rgba(200,214,229,0.5); margin-right: 12px; } .map-block { grid-column: 1 / -1; border: 1px solid var(--rule); overflow: hidden; position: relative; } .map-header { display: flex; align-items: center; gap: 14px; padding: 16px 22px; background: var(--night-panel); border-bottom: 1px solid var(--rule); } .map-header-text { flex: 1; } .map-header-title { font-family: 'Cinzel', serif; font-size: 12.1px; letter-spacing: 2.5px; color: var(--silver-dim); text-transform: uppercase; } .map-header-sub { font-size: 13.8px; font-style: italic; color: var(--text-soft); margin-top: 4px; } .map-sigil { font-size: 12.6px; color: var(--accent-glow); flex-shrink: 0; } .map-iframe-wrap { position: relative; height: 320px; } .map-iframe-wrap iframe { width: 100%; height: 100%; border: none; display: block; filter: invert(90%) hue-rotate(190deg) saturate(60%) brightness(0.75); } .map-overlay-label { position: absolute; bottom: 14px; left: 14px; background: rgba(14,21,32,0.9); border: 1px solid var(--rule-bright); padding: 10px 16px; pointer-events: none; } .map-overlay-label strong { font-family: 'Cinzel', serif; font-size: 11.5px; letter-spacing: 2px; color: var(--silver-pale); display: block; } .map-overlay-label span { font-size: 12.6px; font-style: italic; color: var(--accent); } .gallery-empty { text-align: center; padding: 40px; font-style: italic; color: var(--text-soft); font-size: 14.9px; } .gallery-block { grid-column: 1 / -1; border: 1px solid var(--rule); background: var(--night-panel); position: relative; overflow: hidden; } .gallery-block::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(to right, transparent, var(--accent-glow), transparent); } .gallery-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 24px; border-bottom: 1px solid var(--rule); } .gallery-header-left { display: flex; align-items: center; gap: 12px; } .gallery-header-title { font-family: 'Cinzel', serif; font-size: 12.1px; letter-spacing: 2.5px; color: var(--silver-dim); text-transform: uppercase; } .gallery-header-count { font-family: 'Cinzel', serif; font-size: 9.2px; letter-spacing: 1px; color: var(--text-soft); } .gallery-header-link { font-family: 'Cinzel', serif; font-size: 10.3px; letter-spacing: 1.5px; color: var(--silver-pale); text-decoration: none; border: 1px solid var(--rule-bright); padding: 6px 14px; background: rgba(91,143,168,0.1); transition: color 0.2s, border-color 0.2s, background 0.2s; } .gallery-header-link:hover { color: #fff; border-color: var(--silver); background: rgba(91,143,168,0.25); } .gallery-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--rule); } .gallery-item { background: var(--night); padding: 16px 12px 12px; display: flex; flex-direction: column; align-items: center; gap: 10px; text-decoration: none; transition: background 0.2s; cursor: zoom-in; position: relative; overflow: hidden; } .gallery-item:hover { background: var(--night-soft); } .gallery-item-tooltip { position: absolute; bottom: 0; left: 0; right: 0; background: linear-gradient(to top, rgba(8,14,24,0.97) 70%, transparent); padding: 22px 10px 10px; display: flex; flex-direction: column; align-items: center; gap: 2px; transform: translateY(100%); transition: transform 0.25s cubic-bezier(0.4,0,0.2,1); pointer-events: none; } .gallery-item:hover .gallery-item-tooltip { transform: translateY(0); } .gallery-coin-faces { display: flex; gap: 6px; align-items: center; justify-content: center; } .gallery-coin-img { width: 100px; height: 100px; object-fit: contain; border-radius: 50%; filter: brightness(0.95); transition: filter 0.2s; } .gallery-item:hover .gallery-coin-img { filter: brightness(1.1); } .gallery-coin-single { width: 160px; height: 100px; object-fit: contain; filter: brightness(0.95); } .gallery-item-info { text-align: center; } .gallery-item-collection { font-family: 'Cinzel', serif; font-size: 9.2px; letter-spacing: 1.5px; color: var(--accent); text-transform: uppercase; display: block; margin-bottom: 3px; } .gallery-item-id { font-size: 12.6px; font-style: italic; color: var(--text-soft); } .gallery-item-weight { font-family: 'Cinzel', serif; font-size: 9.2px; color: var(--text-soft); letter-spacing: 0.5px; } .gallery-pagination { display: flex; align-items: center; justify-content: center; gap: 4px; padding: 16px 20px; border-top: 1px solid var(--rule); background: var(--night-panel); } .gallery-page-btn { font-family: 'Cinzel', serif; font-size: 10.3px; letter-spacing: 1.5px; color: var(--silver-dim); background: none; border: 1px solid var(--rule); padding: 6px 11px; cursor: pointer; transition: color 0.2s, border-color 0.2s, background 0.2s; min-width: 32px; text-align: center; line-height: 1; } .gallery-page-btn:hover:not(:disabled):not(.active) { color: var(--silver-pale); border-color: var(--rule-bright); background: rgba(91,143,168,0.12); } .gallery-page-btn.active { color: var(--silver-pale); border-color: var(--accent-glow); background: rgba(91,143,168,0.18); } .gallery-page-btn:disabled { opacity: 0.25; cursor: default; } .gallery-page-arrow { font-size: 13.8px; padding: 5px 10px; } .gallery-page-ellipsis { font-family: 'Cinzel', serif; font-size: 10.3px; color: var(--text-soft); padding: 0 4px; pointer-events: none; } /* ── BLOC COTE ── */ .cote-block { grid-column: 1 / -1; border: 1px solid var(--rule); background: var(--night-panel); position: relative; overflow: hidden; } .cote-block::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(to right, transparent, var(--accent-glow), transparent); } .cote-header { display: flex; align-items: center; gap: 12px; padding: 16px 24px; border-bottom: 1px solid var(--rule); } .cote-title { font-family: 'Cinzel', serif; font-size: 12.1px; letter-spacing: 2.5px; color: var(--silver-dim); text-transform: uppercase; } .cote-rows { padding: 6px 24px; } .cote-row { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid rgba(46,74,102,0.4); } .cote-row:last-child { border-bottom: none; } .cote-grade { font-family: 'Cinzel', serif; font-size: 11.5px; letter-spacing: 1.5px; color: var(--accent); text-transform: uppercase; } .cote-grade small { display: block; font-family: 'Playfair Display', serif; font-size: 13.2px; font-style: italic; letter-spacing: 0; text-transform: none; color: var(--text-soft); margin-top: 3px; } .cote-val { font-family: 'Playfair Display', serif; font-size: 17.2px; color: var(--silver-pale); white-space: nowrap; } .cote-note { margin: 4px 24px 0; padding: 14px 16px; border: 1px solid var(--rule); background: rgba(91,143,168,0.06); font-size: 14.4px; line-height: 1.6; color: var(--text-mid); } .cote-ft { padding: 14px 24px 18px; border-top: 1px solid var(--rule); font-size: 12.6px; line-height: 1.55; color: var(--text-soft); } .cote-maj { display: block; margin-top: 6px; font-style: italic; opacity: .85; } .cote-disc { display: block; margin-top: 6px; font-size: 11.5px; opacity: .75; } /* ── fin bloc cote ── */ .share-block { grid-column: 1 / -1; border-top: 1px solid var(--rule); padding-top: 22px; margin-top: 8px; display: flex; align-items: center; gap: 18px; flex-wrap: wrap; } .share-title { font-family: 'Cinzel', serif; font-size: 9.2px; letter-spacing: 2.5px; color: var(--text-soft); text-transform: uppercase; white-space: nowrap; flex-shrink: 0; } .share-links { display: flex; gap: 6px; flex-wrap: wrap; } .share-btn { display: inline-flex; align-items: center; gap: 6px; font-family: 'Cinzel', serif; font-size: 10.9px; letter-spacing: 0.8px; color: var(--silver-pale); text-decoration: none; border: 1px solid var(--rule-bright); padding: 8px 12px; background: rgba(91,143,168,0.08); transition: color 0.2s, border-color 0.2s, background 0.2s, transform 0.15s; cursor: pointer; white-space: nowrap; } .share-btn:hover { color: #fff; border-color: var(--silver); background: rgba(91,143,168,0.28); transform: translateY(-2px); } .share-btn svg { width: 16px; height: 16px; flex-shrink: 0; } .share-btn.share-copy-done { color: #4aaa60; border-color: #4aaa60; } .concordances-block { grid-column: 1 / -1; border: 1px solid var(--rule); background: var(--night-panel); position: relative; overflow: hidden; } .concordances-block::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(to right, transparent, var(--accent-glow), transparent); } .concordances-header { display: flex; align-items: center; gap: 12px; padding: 16px 24px; border-bottom: 1px solid var(--rule); } .concordances-title { font-family: 'Cinzel', serif; font-size: 12.1px; letter-spacing: 2.5px; color: var(--silver-dim); text-transform: uppercase; } .concordances-table { width: 100%; border-collapse: collapse; } .concordances-table tr { border-bottom: 1px solid rgba(46,74,102,0.4); transition: background 0.15s; } .concordances-table tr:last-child { border-bottom: none; } .concordances-table tr:hover { background: rgba(91,143,168,0.05); } .concordances-table td { padding: 11px 24px; vertical-align: middle; } .concord-ref { font-family: 'Cinzel', serif; font-size: 10.9px; letter-spacing: 1.5px; color: var(--text-soft); text-transform: uppercase; white-space: nowrap; width: 220px; } .concord-val { font-family: 'Playfair Display', serif; color: var(--silver-pale); font-size: 16.1px; } .concord-dot { width: 6px; text-align: center; color: var(--accent-glow); font-size: 18.4px; } .rarete-bar-anim { height: 6px; background: rgba(46,74,102,0.3); border: 1px solid var(--rule); margin-top: 6px; margin-bottom: 10px; overflow: hidden; position: relative; border-radius: 3px; } .rarete-bar-fill { height: 100%; width: 0; position: relative; border-radius: 3px; } .rarete-bar-fill::after { content: ''; position: absolute; right: 0; top: 0; bottom: 0; width: 40px; background: linear-gradient(to right, transparent, rgba(255,255,255,0.4)); border-radius: 3px; } @keyframes barFill { from { width: 0; } } .notes-block { grid-column: 1 / -1; border: 1px solid var(--rule); background: var(--night-panel); position: relative; overflow: hidden; } .notes-block::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(to right, transparent, var(--accent-glow), transparent); } .notes-block-header { display: flex; align-items: center; gap: 12px; padding: 16px 24px; border-bottom: 1px solid var(--rule); } .notes-block-title { font-family: 'Cinzel', serif; font-size: 12.1px; letter-spacing: 2.5px; color: var(--silver-dim); text-transform: uppercase; } .accordion-item { border-bottom: 1px solid rgba(46,74,102,0.4); } .accordion-item:last-child { border-bottom: none; } .accordion-trigger { width: 100%; background: none; border: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; padding: 14px 24px; transition: background 0.2s; } .accordion-trigger:hover { background: rgba(91,143,168,0.05); } .accordion-trigger-label { font-family: 'Cinzel', serif; font-size: 10.9px; letter-spacing: 2px; color: var(--silver-pale); text-transform: uppercase; } .accordion-trigger-icon { font-size: 18.4px; color: var(--accent-glow); transition: transform 0.3s; line-height: 1; } .accordion-item.open .accordion-trigger-icon { transform: rotate(45deg); } .accordion-body { max-height: 0; overflow: hidden; transition: max-height 0.4s cubic-bezier(0.4,0,0.2,1); } .accordion-item.open .accordion-body { max-height: 600px; } .accordion-content { padding: 6px 24px 20px; } .accordion-content ul { list-style: none; padding: 0; } .accordion-content ul li { font-size: 15.5px; color: var(--text-mid); padding: 7px 0; border-bottom: 1px solid rgba(46,74,102,0.25); line-height: 1.6; display: flex; gap: 10px; } .accordion-content ul li:last-child { border-bottom: none; } .accordion-content ul li::before { content: '–'; color: var(--accent-glow); flex-shrink: 0; } .accordion-content ul li a { color: var(--accent); text-decoration: none; border-bottom: 1px solid rgba(168,196,216,0.5); padding-bottom: 1px; transition: color 0.2s, border-color 0.2s; } .accordion-content ul li a:hover { color: #fff; border-color: var(--silver); } .author-block { grid-column: 1 / -1; border-top: 1px solid var(--rule); padding-top: 22px; margin-top: 8px; display: flex; align-items: center; gap: 12px; } .author-label { font-family: 'Cinzel', serif; font-size: 9.2px; letter-spacing: 2px; color: var(--text-soft); text-transform: uppercase; } .author-name { font-family: 'Playfair Display', serif; font-style: italic; font-size: 17.2px; color: var(--silver-pale); } @keyframes fadeUp { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } } .dioscures-module .module-inner > * { animation: fadeUp 0.65s ease both; } .coin-header { animation-delay: 0.05s; } .fichabar { animation-delay: 0.15s; } .legend-box { animation-delay: 0.2s; } .body-grid { animation-delay: 0.28s; } @media (max-width: 680px) { .module-inner { padding: 28px 16px; } .body-grid { grid-template-columns: 1fr; gap: 28px; } .section-full, .pull-quote, .map-block, .coin-photo-block, .rarete-block, .gallery-block, .concordances-block, .notes-block, .author-block, .share-block, .cote-block { grid-column: 1; } .map-iframe-wrap { height: 220px; } .coin-photo-block { padding: 18px 0; } .coin-photo-frame::before, .coin-photo-frame::after { display: none; } .coin-photo { max-width: 260px; max-height: 260px; } .coin-header { grid-template-columns: 1fr; gap: 10px; } .coin-title { font-size: 18px; letter-spacing: 1.5px; } .header-rule { display: none; } .legend-box { flex-direction: column; } .legend-face { padding: 16px; } .legend-face-text { font-size: 15px; letter-spacing: 1.5px; word-break: break-word; } .fichabar { flex-wrap: wrap; } .ficha-item { min-width: 33.333%; flex: none; border-bottom: 1px solid var(--rule); } .ficha-val { font-size: 14px; } .rarete-block { flex-direction: column; align-items: center; text-align: center; padding: 18px 14px; } .rarete-score-badge { margin-bottom: 14px; } .rarete-pip-row { justify-content: center; } .rarete-scale-labels { padding: 0 2px; } .gallery-grid { grid-template-columns: repeat(2, 1fr); } .gallery-coin-img { width: 80px; height: 80px; } .gallery-header { flex-wrap: wrap; gap: 10px; } .gallery-header-link { font-size: 9px; padding: 5px 10px; } .cote-row { flex-direction: column; gap: 2px; } .cote-val { font-size: 16px; } .concord-ref { font-size: 9px; width: auto; white-space: normal; } .concordances-table td { padding: 9px 12px; } .share-block { flex-direction: column; align-items: flex-start; gap: 12px; } .share-links { flex-wrap: wrap; gap: 8px; } .share-btn { font-size: 10px; padding: 7px 10px; } .accordion-trigger { padding: 12px 16px; } .accordion-content { padding: 4px 16px 16px; } .author-block { flex-direction: column; align-items: flex-start; gap: 6px; } .pull-quote p { font-size: 17px; } .notes-block-header { padding: 14px 16px; } } @media (max-width: 400px) { .module-inner { padding: 20px 12px; } .gallery-grid { grid-template-columns: 1fr; } .gallery-coin-img { width: 100px; height: 100px; } .ficha-item { min-width: 50%; } .coin-title { font-size: 16px; } } /* ── Lightbox overlay ── */ #lb-overlay { display: none; position: fixed; inset: 0; z-index: 9999; background: rgba(8,14,24,0.96); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); align-items: center; justify-content: center; animation: lbFadeIn 0.25s ease both; } #lb-overlay.open { display: flex; } @keyframes lbFadeIn { from { opacity: 0; } to { opacity: 1; } } .lb-box { position: relative; max-width: 1100px; width: 96vw; background: var(--night-panel); border: 1px solid var(--rule-bright); box-shadow: 0 0 80px rgba(91,143,168,0.18), 0 0 0 1px rgba(91,143,168,0.08); display: flex; flex-direction: column; animation: lbSlideUp 0.28s cubic-bezier(0.4,0,0.2,1) both; } @keyframes lbSlideUp { from { opacity: 0; transform: translateY(24px) scale(0.97); } to { opacity: 1; transform: none; } } .lb-top-bar { display: flex; align-items: center; justify-content: space-between; padding: 14px 22px; border-bottom: 1px solid var(--rule); background: var(--night); position: relative; } .lb-top-bar::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(to right, transparent, var(--accent-glow), var(--silver), var(--accent-glow), transparent); } .lb-collection { font-family: 'Cinzel', serif; font-size: 10.3px; letter-spacing: 2.5px; color: var(--accent); text-transform: uppercase; } .lb-counter { font-family: 'Cinzel', serif; font-size: 10.3px; letter-spacing: 1.5px; color: var(--text-soft); } .lb-close { background: none; border: 1px solid var(--rule); color: var(--silver-dim); width: 32px; height: 32px; cursor: pointer; font-size: 20.7px; line-height: 1; display: flex; align-items: center; justify-content: center; transition: color 0.2s, border-color 0.2s, background 0.2s; } .lb-close:hover { color: #fff; border-color: var(--silver); background: rgba(91,143,168,0.2); } .lb-images { display: flex; align-items: center; justify-content: center; gap: 48px; padding: 52px 48px 50px; min-height: 560px; background: var(--night); position: relative; overflow: hidden; } .lb-img-wrap { display: flex; flex-direction: column; align-items: center; gap: 10px; } .lb-img-label { font-family: 'Cinzel', serif; font-size: 9.2px; letter-spacing: 2px; color: var(--text-soft); text-transform: uppercase; } .lb-coin-img { width: 380px; height: 380px; object-fit: contain; border-radius: 50%; filter: brightness(1.05) drop-shadow(0 4px 32px rgba(91,143,168,0.35)); transition: transform 0.35s cubic-bezier(0.4,0,0.2,1); cursor: zoom-in; } .lb-coin-img.zoomed { transform: scale(2.2); cursor: zoom-out; border-radius: 4px; z-index: 10; } .lb-coin-single { max-width: 720px; max-height: 500px; object-fit: contain; filter: brightness(1.05) drop-shadow(0 4px 32px rgba(91,143,168,0.35)); transition: transform 0.35s cubic-bezier(0.4,0,0.2,1); cursor: zoom-in; } .lb-coin-single.zoomed { transform: scale(2.0); cursor: zoom-out; z-index: 10; } .lb-zoom-hint { position: absolute; bottom: 10px; right: 16px; font-family: 'Cinzel', serif; font-size: 9.2px; letter-spacing: 1.5px; color: var(--text-soft); opacity: 0.7; pointer-events: none; transition: opacity 0.3s; } .lb-images.zoomed-active .lb-zoom-hint { opacity: 0; } .lb-separator { width: 1px; height: 340px; background: linear-gradient(to bottom, transparent, var(--rule-bright), transparent); flex-shrink: 0; } .lb-info { display: flex; align-items: center; justify-content: space-between; padding: 16px 24px; border-top: 1px solid var(--rule); gap: 12px; } .lb-meta { display: flex; flex-direction: column; gap: 4px; } .lb-id { font-family: 'Playfair Display', serif; font-style: italic; font-size: 16.1px; color: var(--silver-pale); } .lb-weight { font-family: 'Cinzel', serif; font-size: 9.8px; letter-spacing: 1px; color: var(--text-soft); margin-top: 2px; } .lb-nav { display: flex; gap: 8px; } .lb-btn { background: none; border: 1px solid var(--rule-bright); color: var(--silver-pale); width: 38px; height: 38px; font-size: 20.7px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: color 0.2s, border-color 0.2s, background 0.2s; } .lb-btn:hover { color: #fff; border-color: var(--silver); background: rgba(91,143,168,0.2); } .lb-btn:disabled { opacity: 0.25; cursor: default; } .lb-link { font-family: 'Cinzel', serif; font-size: 9.8px; letter-spacing: 1.5px; color: var(--accent); text-decoration: none; border: 1px solid var(--rule); padding: 8px 14px; transition: color 0.2s, border-color 0.2s, background 0.2s; white-space: nowrap; } .lb-link:hover { color: #fff; border-color: var(--silver); background: rgba(91,143,168,0.2); } @media (max-width: 600px) { .lb-box { max-height: 95vh; overflow-y: auto; } .lb-images { gap: 12px; padding: 20px 12px 16px; min-height: 260px; flex-direction: column; align-items: center; } .lb-coin-img { max-width: 160px; max-height: 160px; width: 160px; height: 160px; } .lb-coin-single { max-width: 280px; max-height: 200px; } .lb-separator { width: 80%; height: 1px; } .lb-info { flex-wrap: wrap; gap: 10px; padding: 12px 16px; } .lb-nav { gap: 6px; } .lb-btn { width: 34px; height: 34px; font-size: 16px; } .lb-top-bar { padding: 10px 14px; } .lb-link { font-size: 9px; padding: 7px 10px; } }`; document.head.appendChild(s); } /* ---------- Injection du markup lightbox (une seule fois) ---------- */ function injectLightbox() { if (document.getElementById('lb-overlay')) return; var wrap = document.createElement('div'); wrap.innerHTML = ``.trim(); while (wrap.firstChild) document.body.appendChild(wrap.firstChild); } /* ---------- Résolution de la photo principale ---------- */ function resolvePhotoUrl(coin) { if (coin.photo_url_override) return Promise.resolve(coin.photo_url_override); try { var slug = coin.url_lesdioscures ? coin.url_lesdioscures.replace(/\/$/, '').split('/').pop() : null; if (slug) { var apiUrl = 'https://lesdioscures.com/wp-json/wp/v2/posts?slug=' + encodeURIComponent(slug) + '&_fields=featured_media,_links&_embed=wp:featuredmedia'; return fetch(apiUrl, { signal: AbortSignal.timeout(3000) }) .then(function (r) { return r.ok ? r.json() : null; }) .then(function (posts) { if (posts && posts.length) { var media = posts[0]._embedded && posts[0]._embedded['wp:featuredmedia']; if (media && media.length && media[0].source_url) return media[0].source_url; } return FALLBACK_IMG; }) .catch(function () { return FALLBACK_IMG; }); } } catch (e) {} return Promise.resolve(FALLBACK_IMG); } /* ---------- Générateurs HTML ---------- */ function couleurs(coin) { return (coin.rarete_couleurs && coin.rarete_couleurs.length === 11) ? coin.rarete_couleurs : DEFAULT_COULEURS; } function genPips(coin) { var COL = couleurs(coin), score = coin.rarete_score, html = ''; for (var i = 1; i <= 11; i++) { var col = COL[i - 1]; if (i < score) html += '
'; else if (i === score) html += '
'; else html += '
'; } return html; } function genPullQuote(coin) { if (!coin.citation_texte) return ''; return '

' + coin.citation_texte + '

' + '' + (coin.citation_source || '') + '' + (coin.citation_traduction ? '

' + coin.citation_traduction + '

' : '') + '
'; } function genSections(coin) { var pq = genPullQuote(coin), out = ''; (coin.sections || []).forEach(function (s) { var paras = (s.paragraphes || []).map(function (p) { return '

' + p + '

'; }).join('\n'); var cls = s.pleine_largeur ? 'text-section section-full' : 'text-section'; if (s.pleine_largeur && pq) { out += '\n' + pq + '\n'; pq = ''; } out += '
' + '\u2726' + '

' + s.titre + '

' + '
' + paras + '
'; }); return out; } function genCote(cote) { if (!cote || (!cote.note && (!cote.grades || !cote.grades.length))) return ''; var fmt = function (n) { return new Intl.NumberFormat('fr-FR').format(n); }; var rows = (cote.grades || []).map(function (g) { return '
' + g.code + '' + g.libelle + '' + fmt(g.min) + ' \u2013 ' + fmt(g.max) + ' ' + (cote.devise || '\u20ac') + '
'; }).join(''); return ''; } function perPage(coin) { return coin.galerie_per_page || 12; } function genGaleriePage(coin, page) { var pieces = coin.galerie_pieces || []; if (!pieces.length) return ''; var pp = perPage(coin), start = page * pp, slice = pieces.slice(start, start + pp); return slice.map(function (p, i) { var globalIdx = start + i; var faces = p.img ? '' : ''; var poids = [p.poids, p.diametre].filter(Boolean).join(' \u00b7 '); return '' + faces + ''; }).join('\n'); } function genPagination(coin, page) { var pieces = coin.galerie_pieces || []; var pages = Math.ceil(pieces.length / perPage(coin)); if (pages <= 1) return ''; var makeBtn = function (p) { return ''; }; var btns = []; if (pages <= 7) { for (var i = 0; i < pages; i++) btns.push(makeBtn(i)); } else { btns.push(makeBtn(0)); if (page > 2) btns.push('\u2026'); for (var j = Math.max(1, page - 1); j <= Math.min(pages - 2, page + 1); j++) btns.push(makeBtn(j)); if (page < pages - 3) btns.push('\u2026'); btns.push(makeBtn(pages - 1)); } return ''; } function genAccordion(coin) { var liItems = function (arr) { return (arr || []).map(function (t) { return '
  • ' + t + '
  • '; }).join(''); }; var liLiens = function (arr) { return (arr || []).map(function (l) { return '
  • ' + l.texte + ' \u2014 ' + l.desc + '
  • '; }).join(''); }; var block = function (label, inner) { return '
    ' + '
      ' + inner + '
    '; }; return block('Bibliographie g\u00e9n\u00e9rale', liItems(coin.notes_bibliographie)) + block('Sources primaires', liItems(coin.notes_sources_primaires)) + block('Liens web externes', liLiens(coin.notes_liens)); } function genConcordances(concords) { return Object.keys(concords || {}) .filter(function (ref) { var v = concords[ref]; return v && v !== '\u2014'; }) .map(function (ref) { return '' + ref + '\u00b7' + concords[ref] + ''; }).join(''); } /* ---------- Rendu d'une fiche ---------- */ function renderOne(coin) { var root = document.getElementById(coin.mount); if (!root || root.__dioRendered) return; root.__dioRendered = true; root.__coin = coin; root.__page = 0; root.classList.add('dioscures-module'); root.setAttribute('lang', 'fr'); var COL = couleurs(coin); var scoreLabel = coin.rarete_score <= 10 ? coin.rarete_score : '10+'; var scoreSuffix = coin.rarete_score >= 11 ? '' : '/ 10+'; var scoreCouleur = COL[Math.min(coin.rarete_score, 11) - 1]; var bbox = (coin.carte_bbox || '0,0,0,0').split(','); var marker = (coin.carte_marker || '0,0').split(','); var carteURL = 'https://www.openstreetmap.org/export/embed.html?bbox=' + bbox[0] + '%2C' + bbox[1] + '%2C' + bbox[2] + '%2C' + bbox[3] + '&layer=mapnik&marker=' + marker[0] + '%2C' + marker[1]; var photoAlt = (coin.titre || '') + ' \u00b7 LesDioscures ' + (coin.ref_lesdioscures || ''); var photoSource = coin.photo_source_label || 'LesDioscures'; var photoSourceUrl = coin.photo_source_url || coin.url_lesdioscures; var aLeg = coin.avers_legende ? '
    ' + coin.avers_legende + '
    ' : '
    An\u00e9pigraphe
    '; var rLeg = coin.revers_legende ? '
    ' + coin.revers_legende + '
    ' : '
    An\u00e9pigraphe
    '; var html = '
    ' + '
    ' + '
    ' + '
    ' + '

    ' + coin.ref_lesdioscures + ' \u2014 ' + coin.titre + '

    ' + '

    ' + coin.metal + ' \u00b7 ' + coin.atelier + ' \u00b7 ' + coin.date + '

    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '' + photoAlt + '' + '
    ' + '

    ' + coin.titre + ' \u00b7 ' + photoSource + '' + (coin.photo_poids ? ' \u00b7 ' + coin.photo_poids : '') + ' \u00b7 LesDioscures ' + coin.ref_lesdioscures + '

    ' + '
    ' + '
    ' + '
    Date' + coin.date + '
    ' + '
    M\u00e9tal' + coin.metal + '
    ' + '
    Atelier' + coin.atelier + '
    ' + '
    ' + '
    ' + '
    ' + '
    Avers \u00b7 Droit
    ' + aLeg + (coin.avers_legende_developpee ? '
    ' + coin.avers_legende_developpee + '
    ' : '') + (coin.avers_traduction ? '
    ' + coin.avers_traduction + '
    ' : '') + '
    ' + coin.avers_description + '
    ' + '
    ' + '
    ' + '
    Revers \u00b7 Verso
    ' + rLeg + (coin.revers_legende_developpee ? '
    ' + coin.revers_legende_developpee + '
    ' : '') + (coin.revers_traduction ? '
    ' + coin.revers_traduction + '
    ' : '') + '
    ' + coin.revers_description + '
    ' + '
    ' + '
    ' + '
    ' + '' + genSections(coin) + genCote(coin.cote) + '
    ' + '
    \u2726
    ' + '
    ' + coin.carte_titre + '
    ' + '
    ' + coin.carte_sous_titre + '
    ' + '
    ' + '' + '
    ' + coin.carte_label + '' + coin.carte_label2 + '
    ' + '
    ' + '
    ' + '
    ' + '
    \u2726Concordances Bibliographiques
    ' + '' + genConcordances(coin.concordances) + '
    ' + '
    ' + '' + '
    ' + '
    \u2726Notes & R\u00e9f\u00e9rences
    ' + genAccordion(coin) + '
    ' + '
    Article r\u00e9dig\u00e9 parChristopher M\u00e9rat
    ' + '' + '
    ' + '
    '; root.innerHTML = html; /* style scoping du pip courant (label + couleur) propre à ce bloc */ var st = document.createElement('style'); st.textContent = '#' + coin.mount + ' .rarete-pip-current::after{content:\'' + scoreLabel + '\';color:' + scoreCouleur + ';}'; document.head.appendChild(st); /* photo async */ resolvePhotoUrl(coin).then(function (url) { var img = root.querySelector('.coin-main-photo'); if (img) { img.src = url; img.style.opacity = '1'; } }); /* liens de partage */ var pageUrl = coin.url_lesdioscures || location.href; var encUrl = encodeURIComponent(pageUrl); var encTitle = encodeURIComponent(coin.titre || document.title); var fb = root.querySelector('.share-facebook'); if (fb) fb.href = 'https://www.facebook.com/sharer/sharer.php?u=' + encUrl; var tw = root.querySelector('.share-twitter'); if (tw) tw.href = 'https://x.com/intent/tweet?url=' + encUrl + '&text=' + encTitle; var wa = root.querySelector('.share-whatsapp'); if (wa) wa.href = 'https://api.whatsapp.com/send?text=' + encTitle + '%20' + encUrl; /* animation barre de rareté */ var bar = root.querySelector('.rarete-bar'); var badge = root.querySelector('.rarete-badge'); if (bar) { var pct = ((Math.min(coin.rarete_score, 11) / 11) * 100).toFixed(1); var obs = new IntersectionObserver(function (entries) { entries.forEach(function (e) { if (e.isIntersecting) { bar.style.transition = 'width 1.4s cubic-bezier(0.4,0,0.2,1)'; bar.style.width = pct + '%'; if (badge) { badge.style.transition = 'box-shadow 1.4s ease'; badge.style.boxShadow = '0 0 24px ' + scoreCouleur + '55, 0 0 6px ' + scoreCouleur + '44 inset'; } obs.disconnect(); } }); }, { threshold: 0.3 }); obs.observe(bar.parentElement); } } /* ---------- Délégation d'événements (attachée une seule fois) ---------- */ function attachDelegation() { document.addEventListener('click', function (e) { /* Accordéons (scopés au bloc notes) */ var trig = e.target.closest('.accordion-trigger'); if (trig) { var item = trig.closest('.accordion-item'); var notes = trig.closest('.notes-block'); var isOpen = item.classList.contains('open'); if (notes) notes.querySelectorAll('.accordion-item').forEach(function (i) { i.classList.remove('open'); }); if (!isOpen) item.classList.add('open'); trig.setAttribute('aria-expanded', String(!isOpen)); return; } /* Pagination galerie (scopée au bloc) */ var pbtn = e.target.closest('[data-gallery-page]'); if (pbtn && !pbtn.disabled && !pbtn.classList.contains('gallery-page-ellipsis')) { var root = pbtn.closest('.dioscures-module'); if (!root || !root.__coin) return; var target = parseInt(pbtn.dataset.galleryPage, 10); var pages = Math.ceil((root.__coin.galerie_pieces || []).length / perPage(root.__coin)); if (isNaN(target) || target < 0 || target >= pages) return; root.__page = target; var grid = root.querySelector('.gallery-grid-dynamic'); var pager = root.querySelector('.gallery-pagination-wrap'); if (grid) grid.innerHTML = genGaleriePage(root.__coin, target); if (pager) pager.innerHTML = genPagination(root.__coin, target); var block = root.querySelector('.gallery-block'); if (block) block.scrollIntoView({ behavior: 'smooth', block: 'start' }); return; } /* Copier le lien */ var cp = e.target.closest('.share-copy'); if (cp) { var rootC = cp.closest('.dioscures-module'); var url = (rootC && rootC.__coin && rootC.__coin.url_lesdioscures) || location.href; navigator.clipboard.writeText(url).then(function () { cp.classList.add('share-copy-done'); var old = cp.innerHTML; cp.innerHTML = 'Lien copi\u00e9 !'; setTimeout(function () { cp.innerHTML = old; cp.classList.remove('share-copy-done'); }, 2200); }).catch(function () { window.prompt('Copier ce lien :', url); }); return; } /* Imprimer */ var pr = e.target.closest('.share-print'); if (pr) { window.print(); return; } /* Galerie -> lightbox */ var item2 = e.target.closest('.gallery-item'); if (item2) { var rootG = item2.closest('.dioscures-module'); if (rootG && rootG.__coin) { e.preventDefault(); var idx = parseInt(item2.dataset.lbIdx, 10); if (!isNaN(idx)) lbOpen(rootG.__coin.galerie_pieces || [], idx); } return; } }); } /* ---------- Lightbox (partagée, contextualisée par fiche) ---------- */ var lbPieces = [], lbIdx = 0; function lbEl(id) { return document.getElementById(id); } function lbRender(idx) { lbIdx = idx; var p = lbPieces[idx]; lbEl('lb-collection').textContent = p.collection; lbEl('lb-counter').textContent = (idx + 1) + ' / ' + lbPieces.length; lbEl('lb-id').textContent = p.id; lbEl('lb-weight').textContent = [p.poids, p.diametre].filter(Boolean).join(' \u00b7 '); lbEl('lb-link').href = p.url; lbEl('lb-prev').disabled = idx === 0; lbEl('lb-next').disabled = idx === lbPieces.length - 1; var imgs = lbEl('lb-images'); imgs.classList.remove('zoomed-active'); if (p.img) { imgs.innerHTML = '
    ' + p.collection + ' ' + p.id + '
    cliquer pour zoomer'; } else { imgs.innerHTML = '
    AversAvers ' + p.collection + ' ' + p.id + '
    ' + '
    ' + '
    ReversRevers ' + p.collection + ' ' + p.id + '
    ' + 'cliquer pour zoomer'; } imgs.querySelectorAll('.lb-coin-img, .lb-coin-single').forEach(function (img) { img.addEventListener('click', function (ev) { ev.stopPropagation(); var z = this.classList.toggle('zoomed'); imgs.classList.toggle('zoomed-active', z); imgs.querySelectorAll('.lb-coin-img, .lb-coin-single').forEach(function (o) { if (o !== img) o.classList.remove('zoomed'); }); }); }); } function lbOpen(pieces, idx) { if (!pieces || !pieces.length) return; lbPieces = pieces; lbRender(idx); var ov = lbEl('lb-overlay'); ov.classList.add('open'); document.body.style.overflow = 'hidden'; lbEl('lb-close').focus(); } function lbClose() { lbEl('lb-overlay').classList.remove('open'); document.body.style.overflow = ''; lbEl('lb-images').classList.remove('zoomed-active'); } function attachLightboxControls() { var ov = lbEl('lb-overlay'); if (!ov) return; lbEl('lb-close').addEventListener('click', lbClose); ov.addEventListener('click', function (e) { if (e.target === ov) lbClose(); }); lbEl('lb-prev').addEventListener('click', function () { if (lbIdx > 0) lbRender(lbIdx - 1); }); lbEl('lb-next').addEventListener('click', function () { if (lbIdx < lbPieces.length - 1) lbRender(lbIdx + 1); }); document.addEventListener('keydown', function (e) { if (!ov.classList.contains('open')) return; if (e.key === 'Escape') lbClose(); if (e.key === 'ArrowLeft' && lbIdx > 0) lbRender(lbIdx - 1); if (e.key === 'ArrowRight' && lbIdx < lbPieces.length - 1) lbRender(lbIdx + 1); }); } /* ---------- Initialisation ---------- */ function renderAll() { (window.__DIO || []).forEach(renderOne); } function init() { injectCss(); injectLightbox(); attachLightboxControls(); attachDelegation(); renderAll(); /* si des fiches sont ajoutées après coup, on peut rappeler le rendu */ var origPush = window.__DIO.push.bind(window.__DIO); window.__DIO.push = function () { var r = origPush.apply(null, arguments); renderAll(); return r; }; } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();