.camp-page { max-width:900px; margin:0 auto; padding:16px 24px 40px; }
.camp-header { margin-bottom:16px; }
.camp-title { font-size:22px; font-weight:700; color:var(--text-0); margin:0 0 6px; line-height:1.3; }
.camp-meta { font-size:12px; color:var(--text-2); display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.camp-badge { display:inline-block; font-size:10px; font-weight:700; padding:2px 8px; border-radius:6px; }
.camp-badge-crit { background:var(--red-soft); color:var(--red); }
.camp-badge-high { background:var(--red-soft); color:var(--red); }
.camp-badge-elev { background:var(--orange-soft); color:var(--orange); }
.camp-badge-med { background:var(--orange-soft); color:var(--orange); }
.camp-badge-adv { background:var(--yellow-soft); color:var(--yellow); }
.camp-badge-norm { background:var(--bg-2); color:var(--text-3); }
.camp-summary { font-size:14px; line-height:1.6; color:var(--text-1); margin-bottom:16px; }
.camp-section { background:var(--bg-1); border-radius:12px; padding:16px; margin-bottom:12px; box-shadow:var(--card-shadow); }
.camp-section h3 { margin:0 0 10px; font-size:13px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-3); font-weight:700; }
.camp-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }
.camp-stat { text-align:center; padding:12px; background:var(--bg-0); border-radius:8px; }
.camp-stat-val { font-size:20px; font-weight:700; color:var(--text-0); }
.camp-stat-label { font-size:11px; color:var(--text-3); margin-top:2px; }

/* Signal timeline */
.sig-timeline { list-style:none; padding:0; margin:0; }
.sig-timeline li { padding:10px 0; border-bottom:1px solid var(--bg-2); display:flex; gap:12px; align-items:flex-start; }
.sig-timeline li:last-child { border-bottom:none; }
.sig-date { font-size:10px; color:var(--text-3); min-width:70px; flex-shrink:0; padding-top:2px; font-variant-numeric:tabular-nums; }
.sig-body { flex:1; min-width:0; }
.sig-title { font-size:13px; font-weight:600; color:var(--text-0); line-height:1.4; }
.sig-title a { color:inherit; text-decoration:none; }
.sig-title a:hover { text-decoration:underline; }
.sig-source { font-size:11px; color:var(--text-2); margin-top:2px; }
.sig-pills { display:flex; gap:4px; flex-wrap:wrap; margin-top:4px; }
.sig-pill { font-size:9px; font-weight:600; padding:1px 6px; border-radius:4px; }

/* Source breakdown */
.src-bar { display:flex; height:10px; border-radius:5px; overflow:hidden; margin:6px 0; }
.src-bar-seg { min-width:4px; }
.src-legend { display:flex; gap:12px; flex-wrap:wrap; font-size:11px; color:var(--text-2); }
.src-legend-dot { width:8px; height:8px; border-radius:50%; display:inline-block; margin-right:3px; vertical-align:middle; }

/* Peak activity chart */
.peak-chart { display:flex; align-items:end; gap:2px; height:60px; margin:8px 0; }
.peak-bar { flex:1; background:var(--accent); border-radius:2px 2px 0 0; min-width:4px; position:relative; }
.peak-bar:hover::after { content:attr(data-count); position:absolute; bottom:100%; left:50%; transform:translateX(-50%); font-size:9px; color:var(--text-2); white-space:nowrap; }
.peak-labels { display:flex; gap:2px; font-size:8px; color:var(--text-3); }
.peak-labels span { flex:1; text-align:center; min-width:4px; }

/* Related campaigns */
.related-card { padding:10px; background:var(--bg-0); border-radius:8px; margin-bottom:6px; }
.related-card-name { font-size:12px; font-weight:600; color:var(--text-0); }

/* Print styles */
@media print {
  header, footer, .sup-banner, .camp-actions { display:none !important; }
  .camp-page { padding:0; max-width:100%; }
  .camp-section { break-inside:avoid; box-shadow:none; border:1px solid #ddd; }
}

@media (max-width:600px) {
  .camp-page { padding:8px 12px 24px; }
  .camp-grid { grid-template-columns:1fr; }
  .camp-title { font-size:18px; }
  .sig-timeline li { flex-direction:column; gap:4px; }
  .sig-date { min-width:auto; }
}
