.campaign-stage { display: inline-flex; align-items: center; min-height: 32px; padding: 4px 12px; border: 1px solid #aac4b0; border-radius: 6px; background: #edf6ef; color: #205c25; font-size: 14px; font-weight: 700; margin-bottom: 12px; }
.campaign-stage--distributing { background: #edf4fb; color: #174a7e; border-color: #b4cce1; }.campaign-stage--finished { background: #f0f2f1; color: #45544b; border-color: #c9d2cc; }
.campaign-progress-section { margin-block: 32px 48px; }.campaign-progress-section > h2, .campaign-participation h2, .campaign-outcome h2 { font-size: clamp(23px,3vw,30px); font-weight: 800; line-height: 1.7; }.campaign-progress-note { color: #4b5b52; line-height: 1.9; }
/* Confirmed supplies and the separate financial target share the same scales. */
.campaign-progress-item, .campaign-need-preview, .campaign-card { --campaign-color: #21734a; --campaign-light: #88c7a1; --campaign-track: #e5eee8; }
.campaign-progress-item { padding: clamp(18px,3vw,28px); margin-block: 18px; border: 1px solid #d5e2d8; border-radius: 16px; background: #fff; }
.campaign-progress-item--financial, .campaign-need-preview--financial { --campaign-color: #245f9f; --campaign-light: #85b3df; --campaign-track: #e5edf5; }
.campaign-progress-overview { display: flex; align-items: center; gap: clamp(16px,3vw,28px); }
.campaign-progress-detail { flex: 1; min-width: 0; }
.campaign-progress-heading { display: flex; flex-wrap: wrap; gap: 6px 16px; justify-content: space-between; align-items: center; margin-bottom: 16px; }
.campaign-progress-heading h3 { font-size: 21px; font-weight: 750; margin: 0; line-height: 1.8; overflow-wrap: anywhere; }
.campaign-progress-heading > span { color: var(--campaign-color); font-size: 12px; font-weight: 600; }
.campaign-progress-ring { display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; isolation: isolate; flex: 0 0 108px; width: 108px; height: 108px; border-radius: 50%; background: conic-gradient(var(--campaign-color) calc(var(--progress,0) * 1%),var(--campaign-track) 0); font-variant-numeric: tabular-nums; }
.campaign-progress-ring::before { content: ''; position: absolute; inset: 8px; background: #fff; border-radius: 50%; z-index: -1; box-shadow: 0 0 0 3px #ffffff80; }
.campaign-progress-ring strong { font-size: 25px; line-height: 1.5; color: var(--campaign-color); font-weight: 800; direction: ltr; }
.campaign-progress-ring small { font-size: 13px; margin-inline-start: 2px; }
.campaign-progress-ring > span { font-size: 10px; line-height: 1.9; color: #4b5b52; }
.campaign-meter { position: relative; height: 16px; background: var(--campaign-track,#e5eee8); border-radius: 6px; overflow: hidden; display: flex; direction: rtl; }
.campaign-meter > span { display: block; height: 100%; background: linear-gradient(90deg,var(--campaign-light,#88c7a1),var(--campaign-color,#21734a)); border-radius: inherit; min-width: 0; box-shadow: inset 0 1px 0 #ffffff40; }
.campaign-meter::after { content: ''; position: absolute; inset: 0; background: repeating-linear-gradient(to left,transparent 0 calc(25% - 1px),#ffffffb0 calc(25% - 1px) 25%); pointer-events: none; }
.campaign-meter-scale { display: flex; justify-content: space-between; gap: 8px; color: #53675c; font-size: 11px; line-height: 1.8; margin-top: 8px; }
.campaign-figures { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px; margin: 24px 0 0; padding-top: 18px; border-top: 1px solid #e0e9e3; }
.campaign-figures > div { min-width: 0; }
.campaign-figures dt { font-size: 12px; color: #4b5b52; font-weight: 400; margin-bottom: 6px; }
.campaign-figures dd { font-size: 18px; line-height: 1.9; font-weight: 750; margin: 0; overflow-wrap: anywhere; }
.campaign-participation, .campaign-outcome { padding: 28px; background: #f1f7f2; border-inline-start: 4px solid #2e7d32; margin-block: 36px; }.campaign-outcome { background: #f5f8fb; border-color: #31547b; }.campaign-participation-actions .btn-outline-secondary { color: #4b5b52; border-color: #4b5b52; }.campaign-participation-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-block: 20px 12px; }.campaign-complete-note { border: 1px solid #c9d2cc; padding: 18px; line-height: 2; margin-block: 32px; }
.campaign-card h2 { font-size: 22px; line-height: 1.8; font-weight: 800; }.campaign-card-need { margin-top: 16px; font-size: 14px; line-height: 1.9; }.campaign-card-need .campaign-meter { height: 7px; margin-top: 7px; }.campaign-card .campaign-card-funding { font-size: 14px; margin-top: 18px; }.campaign-card .post-card-body > p { -webkit-line-clamp: 2; }
.campaign-editor-section { border-top: 1px solid #d5e2d8; padding-top: 28px; margin-top: 28px; min-width: 0; }.campaign-editor-section > h2, .campaign-editor-section .posts-section-heading h2 { font-size: 23px; font-weight: 700; line-height: 1.8; }.campaign-need-editor { border: 1px solid #b9cfbf; padding: 18px; border-radius: 8px; margin-block: 16px; }.campaign-need-heading { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }.campaign-visibility { display: flex; gap: 8px; align-items: center; min-height: 44px; font-size: 14px; }.campaign-visibility input { width: 18px; height: 18px; accent-color: #2e7d32; }.campaign-need-inputs { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }.campaign-need-inputs label { font-size: 14px; line-height: 2; }.campaign-need-preview { display: flex; align-items: center; gap: 18px; background: #f7faf8; border: 1px solid #e0e9e3; padding: 18px; margin-top: 18px; border-radius: 12px; font-size: 14px; line-height: 1.9; } .campaign-need-preview .campaign-progress-ring { flex-basis: 88px; width: 88px; height: 88px; } .campaign-need-preview .campaign-progress-ring strong { font-size: 21px; } .campaign-need-preview .campaign-progress-ring::before { inset: 7px; } .campaign-need-preview--financial { background: #f6f9fc; border-color: #d5e2ed; } .campaign-need-preview[data-valid="false"] .campaign-progress-ring { opacity: .55; }.campaign-need-preview p { margin-bottom: 10px; }.campaign-need-editor.is-hidden-need { border-style: dashed; background: #f7f8f7; }.campaign-need-editor.is-hidden-need .campaign-need-preview { display: none; }
[data-funding-fields][hidden], [data-undo-need][hidden] { display: none; }
@media (max-width: 575px) { .campaign-need-inputs { grid-template-columns: minmax(0,1fr); }.campaign-need-editor { padding: 14px; }.campaign-figures { gap: 10px; }.campaign-figures dd { font-size: 15px; }.campaign-participation, .campaign-outcome { padding: 18px; }.campaign-participation-actions .btn { width: 100%; }.campaign-progress-heading h3 { font-size: 19px; } }

.campaign-card h2 a { color: #0f1f12; text-decoration: none; }.campaign-card h2 a:hover { color: #1565c0; }
.campaign-card h3 a { color: #0f1f12; text-decoration: none; }.campaign-card h3 a:hover { color: #1565c0; }
.campaign-card .campaign-stage { align-self: flex-start; max-width: 100%; min-height: 26px; padding: 3px 9px; font-size: 12px; line-height: 1.6; margin-bottom: 10px; }
.campaign-card h2, .campaign-card .post-card-body > p, .campaign-card-need { overflow-wrap: anywhere; }
.campaigns-home-section .campaign-card-need { margin-top: 10px; font-size: 13px; }
.campaigns-home-section .campaign-card-funding { margin-top: 12px; }
.campaign-editor-details > summary { cursor: pointer; min-height: 44px; font-size: 22px; line-height: 1.8; font-weight: 700; color: #205c25; margin-bottom: 18px; }

@media (max-width:575px) {
  .campaign-progress-overview { gap: 14px; align-items: flex-start; }
  .campaign-progress-ring { flex-basis: 80px; width: 80px; height: 80px; }
  .campaign-progress-ring::before { inset: 6px; }
  .campaign-progress-ring strong { font-size: 20px; }
  .campaign-progress-ring > span { font-size: 9px; }
  .campaign-progress-heading { margin-bottom: 10px; }
  .campaign-progress-heading h3 { font-size: 17px; }
  .campaign-need-preview { flex-wrap: wrap; padding: 14px; gap: 14px; }
  .campaign-need-preview .campaign-progress-detail { flex-basis: 180px; }
  .campaign-figures { gap: 8px; }
  .campaign-figures dd { font-size: 14px; }
}
@media (prefers-contrast:more) { .campaign-meter > span { background: var(--campaign-color,#21734a); } }
