/* Layout helper (uses common.css tokens where possible) */
    .upload-lead { max-width: 72ch; }

    /* Reuse common.css grid behavior (2 columns desktop, 1 column mobile) */
    .upload-columns { margin-top: 14px; }

    /* Uploader drop-zone: integrate with your design tokens */
    .dm-uploader {
      border: 2px dashed rgba(15, 23, 42, 0.18);
      border-radius: 12px;
      background: #fff;
      padding: 18px;
      min-height: 260px;
      display: grid;
      align-content: center;
      gap: 14px;
      text-align: center;
    }
    .dm-uploader h3 { margin: 0; }

    /* Accessible "button" for file input */
    .upload-btn {
      display: inline-flex;
      justify-content: center;
      align-items: center;
      gap: 10px;
      width: 100%;
      padding: 12px 14px;
      border-radius: 10px;
      border: 1px solid rgba(15, 23, 42, 0.18);
      background: var(--brand);
      color: #fff;
      font: inherit;
      font-weight: 600;
      cursor: pointer;
      text-decoration: none;
      user-select: none;
    }
    .upload-btn:hover { background: var(--brand-700); }
    .upload-btn input[type="file"] {
      position: absolute;
      width: 1px; height: 1px;
      padding: 0; margin: -1px;
      overflow: hidden;
      clip: rect(0,0,0,0);
      white-space: nowrap;
      border: 0;
    }

    /* "Card" header mimic */
    .card-header {
      font-weight: 700;
      color: var(--brand);
      margin: 0 0 10px 0;
      text-transform: uppercase;
      letter-spacing: 0.02em;
    }

    /* Lists */
    .list-unstyled { list-style: none; padding-left: 0; margin: 0; }
    .list-group { list-style: none; padding-left: 0; margin: 0; }
    .list-group-item { padding: 10px 0; border-top: 1px dashed rgba(15, 23, 42, 0.10); }
    .list-group-item:first-child { border-top: none; }
    .empty { opacity: 0.75; }

    /* File items */
    .media { padding: 10px 0; border-top: 1px dashed rgba(15, 23, 42, 0.10); }
    .media:first-child { border-top: none; }
    .media-body p { margin: 0 0 8px 0; }

    /* Progress bar (Bootstrap replacement) */
    .progress {
      height: 10px;
      background: rgba(15, 23, 42, 0.10);
      border-radius: 999px;
      overflow: hidden;
    }
    .progress-bar {
      height: 100%;
      width: 0%;
      background: var(--brand);
      transition: width 180ms ease;
    }
    .progress-bar-striped {
      background-image: linear-gradient(
        45deg,
        rgba(255,255,255,.22) 25%,
        transparent 25%,
        transparent 50%,
        rgba(255,255,255,.22) 50%,
        rgba(255,255,255,.22) 75%,
        transparent 75%,
        transparent
      );
      background-size: 1rem 1rem;
    }
    @media (prefers-reduced-motion: no-preference) {
      .progress-bar-animated { animation: progress-stripes 1s linear infinite; }
    }
    @keyframes progress-stripes {
      from { background-position: 1rem 0; }
      to { background-position: 0 0; }
    }

    /* Text utility replacements */
    .text-muted { opacity: 0.75; }
    .text-center { text-align: center; }
    .mb-1 { margin-bottom: 6px; }
    .mb-2 { margin-bottom: 10px; }
    .mt-1 { margin-top: 6px; }
    .mt-5 { margin-top: 24px; }
    .mb-5 { margin-bottom: 24px; }
