/* ------------------------------------ *\
  #3. TYPOGRAPHY UTILITIES
\* ------------------------------------ */

/* Font Family Utilities */
.is-family-sans {
    font-family: var(--font-family-sans) !important;
}

.is-family-serif {
    font-family: var(--font-family-serif) !important;
}

.is-family-mono {
    font-family: var(--font-family-mono) !important;
    font-weight: var(--weight-normal) !important;
}

.is-family-code {
    font-family: var(--font-family-code) !important;
}

.is-condensed {
    font-stretch: condensed;
}

.is-narrow {
    font-variation-settings: "wdth" var(--width-narrow) !important;
}

/* Size Utilities */
.is-size-1 {
    font-size: var(--text-jumbo) !important;
}

.is-size-2 {
    font-size: var(--text-xxl) !important;
}

.is-size-3 {
    font-size: var(--text-xl) !important;
}

.is-size-4 {
    font-size: var(--text-l) !important;
}

.is-size-5 {
    font-size: var(--text-m) !important;
}

.is-size-6 {
    font-size: var(--text-s) !important;
}

.is-size-7 {
    font-size: var(--text-xs) !important;
}

/* Weight Utilities */
.weight-light {
    font-variation-settings: "wght" var(--weight-light) !important;
}

.weight-normal {
    font-weight: var(--weight-normal) !important;
}

.weight-medium {
    font-weight: var(--weight-medium) !important;
}

.weight-semibold {
    font-weight: var(--weight-semibold) !important;
}

.weight-bold {
    font-weight: var(--weight-bold) !important;
}

/* Line Height Utilities */
.leading-none {
    line-height: var(--leading-none) !important;
}

.leading-tight {
    line-height: var(--leading-tight) !important;
}

.leading-snug {
    line-height: var(--leading-snug) !important;
}

.leading-normal {
    line-height: var(--leading-normal) !important;
}

.leading-relaxed {
    line-height: var(--leading-relaxed) !important;
}

.leading-loose {
    line-height: var(--leading-loose) !important;
}

/* Letter Spacing Utilities */
.tracking-tighter {
    letter-spacing: var(--tracking-tighter) !important;
}

.tracking-tight {
    letter-spacing: var(--tracking-tight) !important;
}

.tracking-normal {
    letter-spacing: var(--tracking-normal) !important;
}

.tracking-wide {
    letter-spacing: var(--tracking-wide) !important;
}

.tracking-wider {
    letter-spacing: var(--tracking-wider) !important;
}

.tracking-widest {
    letter-spacing: var(--tracking-widest) !important;
}

/* Base Typography */
h1,
h2,
h3,
h4,
h5,
h6 {
    margin: 0;
    font-family: var(--font-family-sans);
    font-weight: 600 !important;
    letter-spacing: -0.03em;
    padding: var(--padding-thin) 0;
}

.jumbo {
    font-size: var(--text-jumbo);
    font-weight: var(--weight-normal);
    line-height: var(--leading-tight);
    padding-bottom: 0;
}

h1 {
    font-size: var(--text-xxl);
    line-height: var(--leading-tight);
    font-weight: var(--weight-semibold);
}

h2 {
    font-size: var(--text-xl);
    line-height: var(--leading-tight);
    font-weight: var(--weight-semibold);
}

h3 {
    font-size: var(--text-xl);
    line-height: var(--leading-tight);
    font-weight: var(--weight-semibold);
}

h4 {
    font-size: var(--text-l);
    line-height: var(--leading-normal);
    font-weight: var(--weight-normal);
}

h5 {
    font-size: var(--text-l);
    line-height: var(--leading-normal);
    font-weight: var(--weight-normal);
}

h6 {
    font-size: var(--text-m);
    line-height: var(--leading-normal);
    font-weight: var(--weight-normal);
}

p {
    font-size: var(--text-m);
    line-height: var(--leading-normal);
    font-weight: var(--weight-normal);
    margin: 0 0 1em 0;
    font-family: var(--font-family-sans);
    letter-spacing: -0.01em;
}

code {
    font-family: var(--font-family-code);
    font-size: var(--text-m);
    font-weight: var(--leading-normal);
    padding: 0.25em 0.5em;
}

/* Links */
a {
    color: var(--color-text-link);
    cursor: pointer;
    text-decoration: none;
}

a:not(.button, button):hover {
    text-decoration: underline;
}

.button.is-outlined:hover {
    border-width: 1px !important;
}

/* Remove bold from monospace fonts in titles and headings */
h1.is-family-mono, 
h2.is-family-mono, 
h3.is-family-mono, 
h4.is-family-mono, 
h5.is-family-mono, 
h6.is-family-mono,
.title.is-family-mono,
[style*="font-family: var(--font-mono)"],
[style*="font-family: var(--font-family-mono)"] {
    font-weight: var(--weight-normal) !important;
}

/* Ensure terminal card headers aren't bold */
.navigation-card h4,
.navigation-card h1,
.navigation-card .title,
.navigation-card .card-header-title h1,
#terminal h4,
.card-header-title h1,
.title.is-1.is-family-mono,
.title.is-2.is-family-mono,
.title.is-3.is-family-mono,
.title.is-4.is-family-mono,
.title.is-5.is-family-mono,
.title.is-6.is-family-mono,
.title.is-7.is-family-mono {
    font-weight: var(--weight-normal) !important;
}

/* High-specificity override to ensure no bold text in terminal navigation */
body .navigation-card .card-header-title h1,
body .navigation-card .card-header-title h4,
body .navigation-card .card-header .title,
body #terminal h4,
body #terminal h1 {
    font-weight: 400 !important;
    font-variation-settings: "wght" 400 !important;
} 