diff --git a/docs/index.html b/docs/index.html index af0f7d2..c680df8 100644 --- a/docs/index.html +++ b/docs/index.html @@ -268,6 +268,303 @@ font-size: 0.85rem; font-style: italic; } + +/* CAMPAIGN SELECTION */ +.tech-check { + appearance: none; + -webkit-appearance: none; + width: 14px; + height: 14px; + border: 1px solid var(--border-light); + border-radius: 3px; + background: var(--surface); + cursor: pointer; + flex-shrink: 0; + position: relative; + transition: background 0.12s, border-color 0.12s; +} +.tech-check:hover { border-color: var(--text-dim); } +.tech-check:checked { + background: var(--inform); + border-color: var(--inform); +} +.tech-check:checked::after { + content: ""; + position: absolute; + left: 3px; top: 0px; + width: 5px; height: 9px; + border: solid #0c0e13; + border-width: 0 2px 2px 0; + transform: rotate(45deg); +} +.technique.selected { + background: rgba(74,168,216,0.08); + border-color: var(--inform-border); +} + +.tactic-check { + appearance: none; + -webkit-appearance: none; + width: 16px; + height: 16px; + border: 1px solid var(--border-light); + border-radius: 3px; + background: var(--surface); + cursor: pointer; + flex-shrink: 0; + margin-left: auto; + position: relative; + transition: background 0.12s, border-color 0.12s; +} +.tactic-check:hover { border-color: var(--text-dim); } +.tactic-check:checked, +.tactic-check:indeterminate { + background: var(--inform); + border-color: var(--inform); +} +.tactic-check:checked::after { + content: ""; + position: absolute; + left: 4px; top: 1px; + width: 5px; height: 9px; + border: solid #0c0e13; + border-width: 0 2px 2px 0; + transform: rotate(45deg); +} +.tactic-check:indeterminate::after { + content: ""; + position: absolute; + left: 3px; top: 7px; + width: 9px; height: 2px; + background: #0c0e13; +} + +.campaign-chip { + font-family: var(--font-mono); + font-size: 0.78rem; + color: var(--inform); + background: var(--inform-bg); + border: 1px solid var(--inform-border); + padding: 5px 10px; + border-radius: 4px; + display: none; +} +.campaign-chip.visible { display: inline-block; } +.btn { + background: var(--surface); + border: 1px solid var(--border); + color: var(--text-muted); + font-family: var(--font-body); + font-size: 0.85rem; + padding: 7px 12px; + border-radius: 6px; + cursor: pointer; + transition: border-color 0.15s, color 0.15s; +} +.btn:hover { border-color: var(--text-dim); color: var(--text); } +.btn.primary { color: var(--inform); border-color: var(--inform-border); } +.btn.primary:hover { background: var(--inform-bg); } +.btn[disabled] { opacity: 0.4; cursor: not-allowed; } +.btn[disabled]:hover { border-color: var(--border); color: var(--text-muted); background: transparent; } + +/* REPORT MODAL */ +.report-overlay { + position: fixed; + inset: 0; + background: rgba(0,0,0,0.6); + z-index: 110; + display: none; + align-items: center; + justify-content: center; + padding: 20px; +} +.report-overlay.open { display: flex; } +.report-panel { + background: var(--surface); + border: 1px solid var(--border); + border-radius: 8px; + max-width: 820px; + width: 100%; + max-height: 90vh; + overflow-y: auto; + padding: 24px 28px; + position: relative; +} +.report-panel h2 { font-size: 1.2rem; margin-bottom: 16px; } +.report-panel label { + display: block; + font-family: var(--font-mono); + font-size: 0.72rem; + letter-spacing: 0.08em; + color: var(--text-muted); + text-transform: uppercase; + margin: 14px 0 6px; +} +.report-panel input[type=text], +.report-panel input[type=date], +.report-panel textarea { + width: 100%; + background: var(--surface-2); + border: 1px solid var(--border); + border-radius: 4px; + color: var(--text); + padding: 8px 10px; + font-family: var(--font-body); + font-size: 0.92rem; + outline: none; +} +.report-panel textarea { resize: vertical; min-height: 70px; } +.report-panel input:focus, +.report-panel textarea:focus { border-color: var(--text-dim); } + +.report-tech-list { + margin-top: 12px; + display: flex; + flex-direction: column; + gap: 10px; +} +.report-tech { + background: var(--surface-2); + border: 1px solid var(--border); + border-left: 3px solid var(--inform); + border-radius: 4px; + padding: 10px 12px; +} +.report-tech-head { + display: flex; + justify-content: space-between; + align-items: baseline; + gap: 10px; + margin-bottom: 6px; +} +.report-tech-id { + font-family: var(--font-mono); + font-size: 0.78rem; + color: var(--text-muted); +} +.report-tech-name { font-weight: 600; flex: 1; } +.report-tech-remove { + background: none; + border: 1px solid var(--border); + color: var(--text-dim); + font-size: 0.75rem; + padding: 3px 8px; + border-radius: 3px; + cursor: pointer; +} +.report-tech-remove:hover { color: var(--detect); border-color: var(--detect-border); } + +.report-actions { + margin-top: 22px; + display: flex; + gap: 10px; + justify-content: flex-end; +} + +/* PRINTABLE REPORT (rendered hidden, revealed when body.printing-report) */ +.report-printable { display: none; } + +@media print { + body.printing-report .header, + body.printing-report .matrix, + body.printing-report .overlay, + body.printing-report .report-overlay { display: none !important; } + body.printing-report .report-printable { + display: block; + color: #111; + background: #fff; + font-family: var(--font-body); + padding: 0; + } + body.printing-report a { color: #0a4a8a; text-decoration: underline; } + body.printing-report .report-printable h1 { + font-size: 22pt; + margin-bottom: 4pt; + border-bottom: 2pt solid #111; + padding-bottom: 6pt; + } + body.printing-report .report-printable .meta { + font-size: 10pt; + color: #444; + margin-bottom: 14pt; + } + body.printing-report .report-printable .global-notes { + background: #f6f6f6; + border-left: 3pt solid #999; + padding: 8pt 12pt; + margin-bottom: 18pt; + font-size: 10.5pt; + white-space: pre-wrap; + } + body.printing-report .report-printable h2 { + font-size: 14pt; + margin: 16pt 0 6pt; + color: #111; + border-bottom: 1pt solid #999; + padding-bottom: 3pt; + } + body.printing-report .report-printable .r-tech { + page-break-inside: avoid; + break-inside: avoid; + border: 1pt solid #999; + border-left: 3pt solid #1c6a96; + padding: 8pt 10pt; + margin-bottom: 10pt; + } + body.printing-report .report-printable .r-tech .r-id { + font-family: var(--font-mono); + font-size: 9pt; + color: #555; + } + body.printing-report .report-printable .r-tech .r-name { + font-size: 12pt; + font-weight: 600; + margin-bottom: 4pt; + } + body.printing-report .report-printable .r-tech .r-phase { + font-family: var(--font-mono); + font-size: 8.5pt; + color: #666; + text-transform: uppercase; + letter-spacing: 0.05em; + } + body.printing-report .report-printable .r-tech .r-desc { + font-size: 10pt; + line-height: 1.4; + margin: 6pt 0; + } + body.printing-report .report-printable .r-tech .r-section { margin-top: 6pt; } + body.printing-report .report-printable .r-tech .r-section-title { + font-family: var(--font-mono); + font-size: 8.5pt; + color: #444; + text-transform: uppercase; + letter-spacing: 0.05em; + } + body.printing-report .report-printable .r-tech .r-section li, + body.printing-report .report-printable .r-tech .r-section .r-text { + font-size: 9.5pt; + color: #222; + line-height: 1.4; + } + body.printing-report .report-printable .r-tech .r-obs { + margin-top: 8pt; + padding: 6pt 10pt; + background: #fffbe6; + border-left: 3pt solid #d4a900; + font-size: 10pt; + white-space: pre-wrap; + } + body.printing-report .report-printable .r-tech .r-obs-label { + font-family: var(--font-mono); + font-size: 8.5pt; + color: #6a5400; + text-transform: uppercase; + letter-spacing: 0.05em; + margin-bottom: 3pt; + } + @page { size: A4; margin: 14mm 14mm 16mm; } +} @@ -280,6 +577,9 @@
+ + +
@@ -295,6 +595,35 @@

+
+
+ +

Rapport de campagne

+ + + + + + + + + + + +
+ +
+ + + + +
+ +
+
+ + +