/* Box Sizing */
*,
*::before,
*::after {
    box-sizing: border-box;
}

/* Section Header - Reusable header styling for sections */
.section-header {
    font-size: var(--font-size-md);
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
	font-style: normal;
	font-weight: 700;
	line-height: var(--line-height-normal);
}

/* Modifier for mobile-only visibility */
.section-header--mobile-only {
    display: block;
}

@media (min-width: 48rem) {
    .section-header--mobile-only {
        display: none;
    }
    
    .section-header {
        padding: 0;
    }
}

/* ============================================
   SEMANTIC TYPOGRAPHY UTILITIES
   ============================================ */

/* Body Text - Default */
.text-body {
    color: var(--text-regular-default);
    font-size: var(--font-size-body);
    font-style: normal;
    font-weight: 400;
    line-height: var(--line-height-normal);
}

/* Body Text - Secondary */
.text-body-secondary {
    color: var(--text-regular-secondary);
    font-size: var(--font-size-body);
    font-style: normal;
    font-weight: 400;
    line-height: var(--line-height-normal);
}

/* Label Text - For form labels, section headers */
.text-label {
    color: var(--text-regular-default);
    font-size: var(--font-size-body);
    font-style: normal;
    font-weight: 600;
    line-height: var(--line-height-normal);
}

/* Bold Body Text - For emphasized body text */
.text-body-bold {
    color: var(--text-regular-default);
    font-size: var(--font-size-body);
    font-style: normal;
    font-weight: 700;
    line-height: var(--line-height-normal);
}

/* Small Text - Default */
.text-sm {
    color: var(--text-regular-default);
    font-size: var(--font-size-sm);
    font-style: normal;
    font-weight: 400;
    line-height: var(--line-height-compact);
}

/* Small Text - Tertiary */
.text-sm-tertiary {
    color: var(--text-regular-tertiary);
    font-size: 0.875rem;
    font-style: normal;
    font-weight: 400;
    line-height: 1.25rem;
}

/* Extra Small Text - Secondary */
.text-xs-secondary {
    color: var(--text-regular-secondary);
    font-size: 0.6875rem;
    font-style: normal;
    font-weight: 400;
    line-height: 1rem;
}

/* Text Invert - For text on dark backgrounds */
.text-invert {
    color: var(--text-regular-invert);
}

/* Text Alignment */
.text-center {
    text-align: center;
}

/* ============================================
   TEXT DECORATION UTILITIES
   ============================================ */

/* Underline - For links, toggle buttons */
.underline {
    text-decoration: underline;
    text-decoration-style: solid;
    text-decoration-skip-ink: none;
    text-decoration-thickness: auto;
    text-underline-offset: auto;
    text-underline-position: from-font;
}

/* ============================================
   TEXT ELLIPSIS UTILITIES
   ============================================ */

/* Single line ellipsis */
.text-ellipsis {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ============================================
   FOCUS UTILITIES
   ============================================ */

/* Remove focus outline for non-interactive/decorative elements (headings, labels, etc.)
   Use on elements that can receive focus on load or tab but are not controls. */
.focus-outline-none:focus {
    outline: none;
}

/* ============================================
   BORDER UTILITIES
   ============================================ */

/* Section divider border - bottom border with highlight color */
.border-bottom-section {
    border-bottom: var(--border-width-thin) solid var(--border-light);
}
