/* =============================================================================
 * Change Proposal — visual treatment for the `changeProposal` shortcode
 *
 * Three modes (edit / highlight / flag) map to the three annotation
 * patterns (micro-editing / micro-RAGing / micro-flagging). Four statuses
 * (proposed / accepted / rejected / withdrawn) overlay status-specific
 * typography. Mode and status classes compose independently.
 *
 * Used by `src/_includes/parts/change-proposal/{wrapper,edit,highlight,
 * flag}.njk`. Linked once from `parts/base_head.njk` so every page that
 * embeds a change proposal picks up these styles automatically.
 * ============================================================================= */

/* ---------- Wrapper card ------------------------------------------------- */

.change-proposal {
  position: relative;
  border: 1px solid var(--bs-border-color, #dee2e6);
  border-radius: 0.5rem;
  background: var(--bs-body-bg, #ffffff);
  padding: 1.25rem 1.25rem 1rem;
  margin: 1.5rem 0;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}

.change-proposal-header {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: -0.25rem 0 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--bs-border-color-translucent, rgba(0, 0, 0, 0.08));
}

.change-proposal-mode-badge,
.change-proposal-status-badge {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  padding: 0.2rem 0.5rem;
  border-radius: 0.25rem;
  text-transform: uppercase;
  line-height: 1;
}

.change-proposal-mode-badge {
  background: var(--bs-secondary-bg, #e9ecef);
  color: var(--bs-secondary-color, #495057);
}

.change-proposal-status-badge {
  background: transparent;
  border: 1px solid currentColor;
  color: var(--bs-secondary-color, #495057);
}

.change-proposal-anchor {
  margin-left: auto;
  color: var(--bs-secondary-color, #6c757d);
  text-decoration: none;
  opacity: 0.55;
  font-weight: 600;
}
.change-proposal-anchor:hover { opacity: 1; }

/* ---------- Body sections ----------------------------------------------- */

.change-proposal-body {
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
}

.change-proposal-label {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--bs-secondary-color, #6c757d);
  margin: 0 0 0.25rem;
}

.change-proposal-content {
  font-size: 0.95rem;
  line-height: 1.55;
}
.change-proposal-content > *:first-child { margin-top: 0; }
.change-proposal-content > *:last-child  { margin-bottom: 0; }

.change-proposal-arrow {
  align-self: center;
  font-size: 1.1rem;
  color: var(--bs-secondary-color, #6c757d);
  opacity: 0.55;
  user-select: none;
  line-height: 1;
}

.change-proposal-empty {
  color: var(--bs-secondary-color, #6c757d);
  font-style: italic;
  font-size: 0.88rem;
}
.change-proposal-empty em { font-style: italic; }

.change-proposal-empty-card {
  color: var(--bs-secondary-color, #6c757d);
  font-style: italic;
  text-align: center;
  padding: 0.5rem 0;
}

/* ---------- Mode: edit (neutral with subtle blue accent) ----------------- */

.change-proposal-edit {
  border-left: 4px solid #4f7cc6;
}
.change-proposal-edit .change-proposal-mode-badge {
  background: rgba(79, 124, 198, 0.12);
  color: #2f5aa1;
}
.change-proposal-edit .change-proposal-asis {
  background: rgba(0, 0, 0, 0.025);
  border-radius: 0.375rem;
  padding: 0.625rem 0.875rem;
}
.change-proposal-edit .change-proposal-tobe {
  background: rgba(79, 124, 198, 0.08);
  border-radius: 0.375rem;
  padding: 0.625rem 0.875rem;
}
.change-proposal-edit .change-proposal-rationale {
  margin-top: 0.25rem;
}

/* ---------- Mode: highlight (yellow accent — selection metaphor) --------- */

.change-proposal-highlight {
  border-left: 4px solid #f6c453;
}
.change-proposal-highlight .change-proposal-mode-badge {
  background: rgba(246, 196, 83, 0.22);
  color: #8a6a14;
}
.change-proposal-highlight .change-proposal-highlighted {
  background: linear-gradient(transparent 65%, rgba(255, 235, 59, 0.55) 65%);
  border-radius: 0.375rem;
  padding: 0.625rem 0.875rem;
}
.change-proposal-highlight .change-proposal-feedback {
  background: rgba(246, 196, 83, 0.1);
  border-radius: 0.375rem;
  padding: 0.625rem 0.875rem;
  border-left: 3px solid #f6c453;
}

/* ---------- Mode: flag (orange accent — concern marker) ------------------ */

.change-proposal-flag {
  border-left: 4px solid #ff6b35;
}
.change-proposal-flag .change-proposal-mode-badge {
  background: rgba(255, 107, 53, 0.14);
  color: #b94511;
}
.change-proposal-flag-body {
  position: relative;
  padding-left: 2.25rem;
}
.change-proposal-flag-marker {
  position: absolute;
  left: 0;
  top: 0.1rem;
  color: #ff6b35;
  font-size: 1.25rem;
  line-height: 1;
}
.change-proposal-flag .change-proposal-flagged {
  background: rgba(255, 107, 53, 0.08);
  border-radius: 0.375rem;
  padding: 0.625rem 0.875rem;
  border-left: 3px solid rgba(255, 107, 53, 0.5);
}
.change-proposal-flag .change-proposal-concern {
  background: rgba(255, 107, 53, 0.04);
  border-radius: 0.375rem;
  padding: 0.625rem 0.875rem;
}

/* ---------- Status: proposed (default) ----------------------------------- */

.change-proposal-status-proposed .change-proposal-status-badge {
  border-color: var(--bs-secondary-color, #6c757d);
  color: var(--bs-secondary-color, #6c757d);
}

/* ---------- Status: accepted --------------------------------------------- */

.change-proposal-status-accepted .change-proposal-status-badge {
  border-color: #2e7d32;
  color: #2e7d32;
  background: rgba(46, 125, 50, 0.08);
}
.change-proposal-status-accepted del {
  color: var(--bs-secondary-color, #6c757d);
  text-decoration: line-through;
  text-decoration-color: rgba(0, 0, 0, 0.35);
  opacity: 0.7;
}
.change-proposal-status-accepted ins {
  color: #1b5e20;
  text-decoration: none;
  background: rgba(46, 125, 50, 0.08);
  border-radius: 2px;
  padding: 0 1px;
}

/* ---------- Status: rejected --------------------------------------------- */

.change-proposal-status-rejected .change-proposal-status-badge {
  border-color: #c62828;
  color: #c62828;
  background: rgba(198, 40, 40, 0.06);
}
.change-proposal-status-rejected del {
  color: #c62828;
  text-decoration: line-through;
  text-decoration-color: rgba(198, 40, 40, 0.5);
  opacity: 0.8;
}
.change-proposal-status-rejected .change-proposal-rationale {
  background: rgba(198, 40, 40, 0.04);
  border-radius: 0.375rem;
  padding: 0.625rem 0.875rem;
  border-left: 3px solid rgba(198, 40, 40, 0.4);
}

/* ---------- Status: withdrawn (dimmed entire card + watermark) ----------- */

.change-proposal-status-withdrawn {
  opacity: 0.55;
  position: relative;
  overflow: hidden;
}
.change-proposal-status-withdrawn::before {
  content: "WITHDRAWN";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) rotate(-18deg);
  font-size: 2.5rem;
  font-weight: 800;
  letter-spacing: 0.15em;
  color: rgba(0, 0, 0, 0.06);
  pointer-events: none;
  z-index: 0;
  white-space: nowrap;
}
.change-proposal-status-withdrawn .change-proposal-status-badge {
  border-color: var(--bs-secondary-color, #6c757d);
  color: var(--bs-secondary-color, #6c757d);
  text-decoration: line-through;
}
.change-proposal-status-withdrawn > * { position: relative; z-index: 1; }

/* ---------- Dark mode adjustments --------------------------------------- */

[data-bs-theme="dark"] .change-proposal {
  background: var(--bs-tertiary-bg, #1f1f1f);
}
[data-bs-theme="dark"] .change-proposal-edit .change-proposal-asis {
  background: rgba(255, 255, 255, 0.04);
}
[data-bs-theme="dark"] .change-proposal-edit .change-proposal-tobe {
  background: rgba(79, 124, 198, 0.18);
}
[data-bs-theme="dark"] .change-proposal-status-withdrawn::before {
  color: rgba(255, 255, 255, 0.06);
}
[data-bs-theme="dark"] .change-proposal-highlight .change-proposal-highlighted {
  background: linear-gradient(transparent 65%, rgba(246, 196, 83, 0.35) 65%);
}

/* ---------- Print styles ------------------------------------------------- */

@media print {
  .change-proposal {
    page-break-inside: avoid;
    box-shadow: none;
    background: transparent;
    border: 1px solid #999;
  }
  .change-proposal-edit .change-proposal-asis,
  .change-proposal-edit .change-proposal-tobe,
  .change-proposal-highlight .change-proposal-highlighted,
  .change-proposal-highlight .change-proposal-feedback,
  .change-proposal-flag .change-proposal-flagged,
  .change-proposal-flag .change-proposal-concern,
  .change-proposal-status-rejected .change-proposal-rationale {
    background: transparent;
    border: 1px solid #ccc;
  }
  .change-proposal-status-withdrawn::before {
    color: rgba(0, 0, 0, 0.18);
  }
  .change-proposal-anchor { display: none; }
}
