/* ─── Soft-delete banner ─── */

.soft-delete-banner[hidden] {
  display: none;
}

.soft-delete-banner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: var(--qh-space-3) var(--qh-space-6);
  background: color-mix(in srgb, var(--qh-danger, #b91c1c) 10%, var(--qh-surface));
  border-bottom: 1px solid color-mix(in srgb, var(--qh-danger, #b91c1c) 25%, var(--qh-border));
  font-size: var(--qh-font-size-body-sm);
}

.soft-delete-banner-text {
  margin: 0;
  color: color-mix(in srgb, var(--qh-danger, #b91c1c) 80%, var(--qh-text-primary));
}

.soft-delete-banner-btn {
  flex-shrink: 0;
  background: var(--qh-danger, #b91c1c);
  color: #fff;
  border: none;
  cursor: pointer;
  padding: var(--qh-space-2) var(--qh-space-4);
  border-radius: var(--qh-radius-btn, 10px);
  font-size: var(--qh-font-size-body-sm);
  font-weight: 500;
  transition: opacity 0.15s;
}

.soft-delete-banner-btn:hover {
  opacity: 0.85;
}

.soft-delete-banner-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ─── Toast notifications ─── */

.toast-container {
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  pointer-events: none;
}

.toast {
  pointer-events: auto;
  max-width: 360px;
  padding: 0.75rem 1rem;
  border-radius: 8px;
  font-size: var(--qh-font-size-body-md);
  line-height: 1.4;
  color: #fff;
  box-shadow: var(--qh-shadow-lg, 0 16px 40px rgba(15,23,42,0.18));
  opacity: 0;
  transform: translateY(8px);
  transition: opacity var(--qh-duration-fast) var(--qh-ease-default), transform var(--qh-duration-fast) var(--qh-ease-default);
}

.toast--visible {
  opacity: 1;
  transform: translateY(0);
}

.toast--error {
  background: var(--qh-danger, #b91c1c);
}

.toast--warning {
  background: #b45309;
}

.toast--info {
  background: var(--qh-text-secondary, #475569);
}

.toast--success {
  background: color-mix(in srgb, #34c759 85%, var(--qh-surface));
  color: #fff;
}

/* ─── Editorial rule (gold gradient line) ──────────────────────
   Reusable accent divider — places a thin gold line that fades
   to transparent on the right. Use as <span class="qh-rule qh-rule--md">
   under headings/subtitles/section breaks. Add `qh-rule--center` for
   transparent → gold → transparent for centered/symmetric sections.
   ──────────────────────────────────────────────────────────── */
.qh-rule {
  display: block;
  height: 1px;
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--qh-accent) 65%, transparent),
    transparent
  );
}

.qh-rule--xs { width: 32px; }
.qh-rule--sm { width: 56px; }
.qh-rule--md { width: 96px; }
.qh-rule--lg { width: 160px; }

/* Thin variant: a softer, lighter rule for places where the standard
   1px rule would feel too heavy (e.g. inside dense content blocks).
   We use opacity instead of sub-pixel height — sub-pixel rules can
   render as zero pixels on non-retina displays and disappear entirely. */
.qh-rule--thin { opacity: 0.55; }

/* Centered variant: transparent → gold → transparent */
.qh-rule--center {
  background: linear-gradient(
    90deg,
    transparent,
    color-mix(in srgb, var(--qh-accent) 65%, transparent),
    transparent
  );
}

/* Default placement: when nested inside .page-hero, give the rule
   block-level breathing room from the preceding subtitle. */
.page-hero .qh-rule {
  margin-top: var(--qh-rhythm-block);
}
