/* Loop pagination nav — static classes (not token-driven), enqueued when a loop is present. */
.lm-loop-pages { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; justify-content: center; margin-top: 24px; }
.lm-loop-link { display: inline-flex; align-items: center; justify-content: center; min-width: 38px; height: 38px; padding: 0 12px; border: 1px solid #e2e8f0; border-radius: 8px; color: inherit; text-decoration: none; font-size: 14px; line-height: 1; transition: background 0.15s, border-color 0.15s; }
.lm-loop-link:hover { border-color: #94a3b8; background: #f8fafc; }
.lm-loop-link.is-current { background: #0f172a; border-color: #0f172a; color: #fff; pointer-events: none; }
.lm-loop-gap { display: inline-flex; align-items: center; min-width: 24px; justify-content: center; color: #94a3b8; }
/* Loop empty state — shown when a loop has no items and an empty message is configured. */
.lm-loop-empty { color: #64748b; font-size: 14px; padding: 16px 0; text-align: center; }
/* Loop visitor filter bar (search + taxonomy), rendered above the items. */
.lm-loop-filters { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 20px; }
.lm-loop-filters input[type="search"], .lm-loop-filters select { padding: 8px 12px; border: 1px solid #e2e8f0; border-radius: 8px; font: inherit; font-size: 14px; min-width: 0; }
.lm-loop-filters input[type="search"] { flex: 1 1 200px; }
.lm-loop-filter-go { padding: 8px 16px; border: 0; border-radius: 8px; background: #0f172a; color: #fff; font: inherit; font-size: 14px; cursor: pointer; }
.lm-loop-filter-go:hover { background: #1e293b; }
