/* curlo — Utilities (framework-agnostic, collision-safe curlo-* helpers).
 * Requires tokens.css. Includes a minimal layout grid so curlo pages can be
 * built WITHOUT Bootstrap (Bootstrap stacks keep using .container/.row).
 */

/* ---- Fonts ---- */
.curlo-mono { font-family: var(--curlo-font-mono) !important; }
.curlo-sans { font-family: var(--curlo-font-sans) !important; }

/* ---- Page / product-chrome title (mono display) ----
 * Opt-in title for app / tool / product pages so they read as terminal chrome
 * rather than marketing prose. Editorial / CMS content keeps the sans h1–h6
 * defaults (base.css) — do NOT force all headings to mono. Carries no margins so
 * it won't fight WordPress/Bootstrap layout; add spacing with your own utility. */
.curlo-page-title {
    font-family: var(--curlo-font-mono) !important;
    font-weight: 700;
    font-size: clamp(1.4rem, 1.1rem + 1.4vw, 2rem);
    letter-spacing: -0.03em;
    line-height: 1.15;
    color: var(--curlo-text);
    margin: 0;
}

/* ---- Text colors (accent variants are theme-aware / readable) ---- */
.curlo-text          { color: var(--curlo-text) !important; }
.curlo-text-muted    { color: var(--curlo-muted) !important; }
.curlo-text-primary  { color: var(--curlo-primary-ink) !important; }
.curlo-text-secondary{ color: var(--curlo-secondary-ink) !important; }
.curlo-text-accent   { color: var(--curlo-accent-ink) !important; }
.curlo-text-danger   { color: var(--curlo-danger-ink) !important; }
.curlo-glow-text     { text-shadow: var(--curlo-glow-text); }

/* ---- Backgrounds ---- */
.curlo-bg-ink       { background: var(--curlo-ink) !important; }
.curlo-bg-surface   { background: var(--curlo-surface) !important; }
.curlo-bg-surface-2 { background: var(--curlo-surface-2) !important; }
.curlo-bg-code      { background: var(--curlo-code-bg) !important; }

/* ---- Icon chips (tinted squares for SVG/icon glyphs) ---- */
.curlo-icon-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px; height: 40px;
    border-radius: 10px;
    background: var(--curlo-surface-2);
    color: var(--curlo-text);
    flex-shrink: 0;
}
.curlo-icon-chip.round { border-radius: 50%; }
.curlo-icon-chip--primary   { background: var(--curlo-primary-tint);   color: var(--curlo-primary-ink); }
.curlo-icon-chip--secondary { background: var(--curlo-secondary-tint); color: var(--curlo-secondary-ink); }
.curlo-icon-chip--accent    { background: var(--curlo-accent-tint);    color: var(--curlo-accent-ink); }
.curlo-icon-chip--danger    { background: var(--curlo-danger-tint);    color: var(--curlo-danger-ink); }

/* ---- Avatars ---- */
.curlo-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px; height: 32px;
    border-radius: 50%;
    font-size: 0.8rem;
    font-weight: 700;
    background: var(--curlo-primary);
    color: var(--curlo-on-accent);
    flex-shrink: 0;
}
.curlo-avatar--secondary { background: var(--curlo-secondary); }
.curlo-avatar--accent    { background: var(--curlo-accent); }

/* ---- Minimal layout (for standalone / non-Bootstrap pages) ---- */
.curlo-container { max-width: 1100px; margin: 0 auto; padding: 0 24px; }
.curlo-grid { display: grid; gap: 1.25rem; }
.curlo-grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
.curlo-grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.curlo-grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
.curlo-flex { display: flex; }
.curlo-wrap { flex-wrap: wrap; }
.curlo-items-center { align-items: center; }
.curlo-between { justify-content: space-between; }
.curlo-gap-2 { gap: 0.5rem; }
.curlo-gap-3 { gap: 0.75rem; }
.curlo-gap-4 { gap: 1rem; }
@media (max-width: 820px) {
    .curlo-grid.cols-2,
    .curlo-grid.cols-3,
    .curlo-grid.cols-4 { grid-template-columns: 1fr; }
}
