/* ── Pink Platform UI baseline ── */
html {
    font-size: 16px;
}

body {
    font-size: 1rem;
    line-height: 1.5;
    color: #1a1a1a;
}

table {
    font-size: 0.9rem;   /* ~14.4px — readable in dense tables */
}

th, td {
    font-size: inherit;
    padding: 6px 10px;
}

.modal, .modal * {
    font-size: 1rem;     /* modals match body — never shrink */
}

small, .text-sm {
    font-size: 0.85rem;  /* 13.6px floor — never below this */
}

label, .label, .tag, .badge {
    font-size: 0.8rem;   /* status pills like active/offline */
    letter-spacing: 0.02em;
}

/* ── Async wait indicator ────────────────────────────────────────────────────
   Preferred: mkSpinner() in global.js returns an <img ajax-loader.gif> element.
   .m-spinner is a CSS-only fallback for contexts where JS img insertion is awkward. */
@keyframes m-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
.m-spinner {
    display: inline-block;
    animation: m-spin 1s linear infinite;
    font-style: normal;
    line-height: 1;
    cursor: default;
    user-select: none;
}
