/* ============================================================
 *  SHARED CONTROLS
 *
 *  Was auth.css, back when this page drew its own sign-in overlay. That
 *  overlay is gone — the shared Harbinger widget (/login/auth-widget.js)
 *  brings its own styles — and what survived is the handful of rules the
 *  rest of the app had quietly come to depend on: .btn-primary is the
 *  primary button for every view, not just a login form.
 *
 *  Keep this file in its original slot in index.html's load order (third,
 *  after base and loading): .btn-primary is overridden in responsive.css,
 *  which must still win.
 * ============================================================ */
.btn-primary {
    width: 100%;
    padding: 13px;
    background: var(--accent);
    color: var(--text-on-accent);
    border: none;
    border-radius: 8px;
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    margin-top: 8px;
    transition: background 0.2s;
}
.btn-primary:hover  { background: var(--accent-hover); }
.btn-primary:active { background: var(--accent-active); }
.btn-primary:disabled { background: var(--text-faint); cursor: not-allowed; }

/* The source modal's tree mark and its error line. */
.source-logo { font-size: 3rem; line-height: 1; margin-bottom: 12px; }

.source-status {
    margin-top: 12px;
    font-size: 0.85rem;
    color: var(--danger);
    min-height: 20px;
}

/* Progress, not failure — the status line is red by default. */
.source-status.is-busy { color: var(--text-secondary); }
