/* =============================================================
   style.css – Spezifische Overrides
   NWI-Portal
   So wenig wie möglich. Globale Anpassungen die nicht in
   components.css oder layout.css passen.
   ============================================================= */

/* Seiten-Überschriften */
h1 {
    font-family: var(--font-family-headline);
    font-size: var(--font-size-h1);
    font-weight: var(--font-weight-bold);
    color: var(--color-on-surface);
    letter-spacing: -0.02em;
    margin-bottom: var(--spacing-lg);
}

h2 {
    font-family: var(--font-family-headline);
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-semibold);
    color: var(--color-on-surface);
    letter-spacing: -0.01em;
    margin-bottom: var(--spacing-md);
}

h3 {
    font-family: var(--font-family-headline);
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-semibold);
    color: var(--color-on-surface);
    margin-bottom: var(--spacing-sm);
}

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

a:hover {
    text-decoration: underline;
}

/* Pflichtfeld-Marker */
.required::after {
    content: ' (erforderlich)';
    color: var(--color-text-muted);
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    font-size: var(--font-size-xs);
}

/* Trunc – Text abschneiden mit Ellipsis */
.text-truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Muted Text */
.text-muted {
    color: var(--color-text-muted);
}

.text-sm {
    font-size: var(--font-size-sm);
}

/* Ausrichtung */
.text-right  { text-align: right; }
.text-center { text-align: center; }

/* Abstands-Helfer */
.mt-sm { margin-top: var(--spacing-sm); }
.mt-md { margin-top: var(--spacing-md); }
.mt-lg { margin-top: var(--spacing-lg); }
.mb-sm { margin-bottom: var(--spacing-sm); }
.mb-md { margin-bottom: var(--spacing-md); }
.mb-lg { margin-bottom: var(--spacing-lg); }

/* Sichtbarkeit */
.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Flex-Helfer */
.flex        { display: flex; }
.flex-center { display: flex; align-items: center; justify-content: center; }
.flex-between{ display: flex; align-items: center; justify-content: space-between; }
.gap-sm      { gap: var(--spacing-sm); }
.gap-md      { gap: var(--spacing-md); }
