:root { --bg: #0c0c0c; --bg-card: #161616; --fg: #f0ece4; --fg-muted: #7a7670; --accent: #e85d3a; --success: #34d399; --success-dim: rgba(52, 211, 153, 0.12); --error: #f43f5e; --error-dim: rgba(244, 63, 94, 0.12); --border: rgba(255,255,255,0.07); --radius: 14px; --font: 'DM Sans', sans-serif; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } .media-badge { position: absolute; top: 10px; left: 10px; padding: 4px 10px; border-radius: 20px; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.6px; backdrop-filter: blur(8px); z-index: 2; } .media-badge.image { background: rgba(59,130,246,0.25); color: #60a5fa; border: 1px solid rgba(59,130,246,0.3); } .media-badge.video { background: rgba(168,85,247,0.25); color: #c084fc; border: 1px solid rgba(168,85,247,0.3); } .media-badge.youtube { background: rgba(239,68,68,0.25); color: #f87171; border: 1px solid rgba(239,68,68,0.3); } .media-badge.vimeo { background: rgba(52,211,153,0.2); color: #34d399; border: 1px solid rgba(52,211,153,0.3); } /* ===== MODAL SIGNALEMENT ===== */ .signaler-overlay { position: fixed; inset: 0; z-index: 2000; background: rgba(0,0,0,0.88); backdrop-filter: blur(18px); display: flex; align-items: center; justify-content: center; opacity: 0; pointer-events: none; transition: opacity 0.35s ease; } .signaler-overlay.visible { opacity: 1; pointer-events: all; } .signaler-modal { width: 94%; max-width: 500px; background: var(--bg-card); border: 1px solid var(--border); border-radius: 18px; overflow: hidden; transform: translateY(30px) scale(0.95); transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1); max-height: 92vh; overflow-y: auto; } .signaler-overlay.visible .signaler-modal { transform: translateY(0) scale(1); } .signaler-header { padding: 20px 22px 0; display: flex; align-items: center; justify-content: space-between; } .signaler-header h2 { color:#847c7c; font-size: 17px; font-weight: 700; display: flex; align-items: center; gap: 30px; } .signaler-header h2 i { color: var(--error); font-size: 15px; } .signaler-close { width: 34px; height: 34px; border-radius: 50%; border: none; background: rgba(255,255,255,0.06); color: var(--fg-muted); font-size: 18px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background 0.2s, color 0.2s; } .signaler-close:hover { background: rgba(255,255,255,0.12); color: var(--fg); } .signaler-body { padding: 18px 22px 24px; } .signaler-preview { position: relative; width: 100%; aspect-ratio: 16/10; border-radius: 12px; overflow: hidden; background: #0a0a0a; margin-bottom: 14px; border: 1px solid var(--border); } .signaler-preview img, .signaler-preview video { width: 100%; height: 100%; object-fit: cover; display: block; } .signaler-preview iframe { width: 100%; height: 100%; border: none; display: block; } .signaler-preview .preview-overlay { position: absolute; inset: 0; display: none; flex-direction: column; align-items: center; justify-content: center; gap: 8px; font-size: 13px; background: rgba(244, 63, 94, 0.06); color: var(--error); z-index: 3; } .signaler-preview .preview-overlay i { font-size: 36px; } .signaler-preview.has-error .preview-overlay { display: flex; } .signaler-preview.has-error img, .signaler-preview.has-error video, .signaler-preview.has-error iframe { opacity: 0.08; } .signaler-type-badge { position: absolute; top: 10px; left: 10px; padding: 5px 12px; border-radius: 20px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; z-index: 4; backdrop-filter: blur(8px); } .signaler-type-badge.image { background: rgba(59,130,246,0.3); color: #93bbfd; } .signaler-type-badge.video { background: rgba(168,85,247,0.3); color: #d8b4fe; } .signaler-type-badge.youtube { background: rgba(239,68,68,0.3); color: #fca5a5; } .signaler-type-badge.vimeo { background: rgba(52,211,153,0.25); color: #6ee7b7; } .signaler-type-badge.inconnu { background: rgba(255,255,255,0.1); color: var(--fg-muted); } .signaler-info-row { display: flex; gap: 10px; margin-bottom: 14px; } .signaler-info { flex: 1; display: flex; flex-direction: column; gap: 4px; padding: 12px 14px; background: rgba(255,255,255,0.025); border-radius: 10px; border: 1px solid var(--border); color:#847c7c; } .signaler-info .info-label { font-size: 10px; color: var(--fg-muted); text-transform: uppercase; letter-spacing: 0.6px; } .signaler-info .info-value { font-size: 14px; font-weight: 700; font-family: 'DM Mono', 'Courier New', monospace; } .signaler-status { display: flex; align-items: center; gap: 10px; padding: 13px 14px; border-radius: 10px; margin-bottom: 14px; font-size: 13px; font-weight: 500; border: 1px solid var(--border); transition: all 0.4s ease; } .signaler-status.testing { background: rgba(255,255,255,0.02); color: var(--fg-muted); } .signaler-status.ok { background: var(--success-dim); border-color: rgba(52,211,153,0.25); color: var(--success); } .signaler-status.notok { background: var(--error-dim); border-color: rgba(244,63,94,0.25); color: var(--error); } .spinner { width: 18px; height: 18px; border: 2px solid rgba(255,255,255,0.08); border-top-color: var(--fg-muted); border-radius: 50%; animation: spin 0.7s linear infinite; flex-shrink: 0; } .signaler-status.ok .spinner, .signaler-status.notok .spinner { display: none; } .status-icon { display: none; font-size: 16px; flex-shrink: 0; } .signaler-status.ok .status-icon.ok-icon { display: block; } .signaler-status.notok .status-icon.notok-icon { display: block; } @keyframes spin { to { transform: rotate(360deg); } } .signaler-link { padding: 10px 14px; background: rgba(0,0,0,0.3); border-radius: 8px; margin-bottom: 18px; border: 1px solid var(--border); font-size: 11px; color: var(--fg-muted); word-break: break-all; line-height: 1.6; max-height: 56px; overflow-y: auto; } .signaler-send { width: 100%; padding: 14px; border: none; border-radius: 12px; font-family: var(--font); font-size: 14px; font-weight: 600; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 10px; transition: all 0.3s ease; opacity: 0.35; pointer-events: none; } .signaler-send.ready { opacity: 1; pointer-events: all; } .signaler-send.ready-notok { background: var(--error); color: #fff; } .signaler-send.ready-notok:hover { box-shadow: 0 6px 28px var(--error-dim); transform: translateY(-1px); } .signaler-ok-message { display: none; flex-direction: column; align-items: center; gap: 12px; padding: 8px 0 0; } .signaler-ok-message.visible { display: flex; } .signaler-ok-icon { width: 48px; height: 48px; border-radius: 50%; background: var(--success-dim); border: 2px solid rgba(52,211,153,0.3); color: var(--success); display: flex; align-items: center; justify-content: center; font-size: 20px; animation: popIn 0.5s cubic-bezier(0.22, 1, 0.36, 1); } .signaler-ok-text { font-size: 14px; font-weight: 600; color: var(--success); text-align: center; line-height: 1.5; } .signaler-ok-sub { font-size: 12px; color: var(--fg-muted); text-align: center; } .signaler-ok-close { margin-top: 4px; padding: 10px 28px; border: 1px solid rgba(255,255,255,0.1); border-radius: 10px; background: transparent; color: var(--fg-muted); font-family: var(--font); font-size: 13px; font-weight: 500; cursor: pointer; transition: all 0.2s; } .signaler-ok-close:hover { border-color: rgba(255,255,255,0.2); color: var(--fg); background: rgba(255,255,255,0.04); } .signaler-auto-close { width: 100%; height: 3px; background: rgba(255,255,255,0.06); border-radius: 2px; overflow: hidden; margin-top: 4px; } .signaler-auto-close-bar { height: 100%; background: var(--success); border-radius: 2px; width: 100%; transform-origin: left; animation: shrinkBar 3s linear forwards; } @keyframes shrinkBar { to { transform: scaleX(0); } } @keyframes popIn { 0% { transform: scale(0); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } .signaler-confirm { display: none; flex-direction: column; align-items: center; gap: 10px; padding: 32px 22px; text-align: center; } .confirm-icon { width: 58px; height: 58px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 24px; animation: popIn 0.5s cubic-bezier(0.22, 1, 0.36, 1); } .confirm-icon.notok { background: var(--error-dim); color: var(--error); border: 2px solid rgba(244,63,94,0.3); } .signaler-confirm h3 { font-size: 17px; font-weight: 700; } .signaler-confirm p { font-size: 13px; color: var(--fg-muted); line-height: 1.6; max-width: 360px; } .confirm-details { font-size: 11px; color: var(--fg-muted); background: rgba(255,255,255,0.025); padding: 12px 14px; border-radius: 8px; border: 1px solid var(--border); word-break: break-all; width: 100%; text-align: left; line-height: 1.7; white-space: pre-line; } .toast-container { position: fixed; bottom: 24px; right: 24px; z-index: 3000; display: flex; flex-direction: column; gap: 10px; } .toast { padding: 13px 18px; border-radius: 12px; font-size: 13px; font-weight: 500; font-family: var(--font); color: #fff; display: flex; align-items: center; gap: 10px; animation: slideIn 0.4s ease, fadeOut 0.4s ease 3.6s forwards; box-shadow: 0 8px 30px rgba(0,0,0,0.4); max-width: 360px; } .toast.notok { background: linear-gradient(135deg, #be123c, #f43f5e); } @keyframes slideIn { from { transform: translateX(100px); opacity: 0; } to { transform: translateX(0); opacity: 1; } } @keyframes fadeOut { to { opacity: 0; transform: translateY(10px); } } ::-webkit-scrollbar { width: 5px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: 3px; } .spinner-btn { width: 14px; height: 14px; border: 2px solid rgba(255,255,255,0.06); /* Assure le contour de base */ border-top-color: #fff; border-radius: 50%; animation: spin 0.6s linear infinite; display: inline-block; vertical-align: middle; } @media (max-width: 1200px) { .signaler-modal { width: 94%; max-width: 90vw; height: 100%; max-height: 70vh; } .signaler-header h2 { font-size: 47px; } .media-badge { font-size: 30px; } .signaler-header h2 i { font-size: 45px; } .signaler-close { font-size: 68px; } .signaler-preview .preview-overlay { gap: 28px; font-size: 33px; } .signaler-preview .preview-overlay i { font-size: 66px; } .signaler-type-badge { font-size: 31px; letter-spacing: 1.5px; } .signaler-info .info-label { font-size: 30px; } .signaler-info .info-value { font-size: 34px; } .signaler-status { font-size: 33px; } .status-icon {font-size: 36px;} .signaler-link { padding: 3px 24px; font-size: 31px; margin-bottom: 24px; height: 100px; } .signaler-send { padding: 24px; font-size: 34px; } .fa-exclamation-circle, .fa-solid, .fas { font-size: 90px; } .confirm-icon { width: 198px; height: 198px; border-radius: 50%; font-size: 64px; } .signaler-ok-icon { width: 68px; height: 68px; font-size: 40px; } .signaler-ok-text { font-size: 34px; } .signaler-ok-sub { font-size: 32px; } .signaler-ok-close { margin-top: 10px; padding: 20px 48px; font-size: 33px; font-weight: 500; } .signaler-confirm h3 { font-size: 37px;} .signaler-confirm p { font-size: 33px;} .confirm-details { font-size: 31px; border-radius: 18px; border: 2px solid var(--border); line-height: 2.7; white-space: pre-line; } .toast-container { gap: 20px; } .toast { padding: 13px 18px; border-radius: 22px; font-size: 33px; gap: 30px; } }