/* ===========================================================================
   IG "Neue-Helene" e.V. – Frontend-Stylesheet
   Designsystem der bisherigen Webseite (Oswald/Lora, Blau/Kupfer),
   technisch neu aufgebaut mit fluider Typografie und modernem Layout.
   =========================================================================== */

/* ------------------------------------------------------------ 1. Tokens -- */

:root {
    /* Marke */
    --nh-blue:        #0c71c3;
    --nh-blue-dark:   #095a9c;
    --nh-blue-soft:   #e7f1fa;
    --nh-copper:      #cc8d66;
    --nh-copper-light:#d29f68;
    --nh-ink:         #232220;
    --nh-ink-soft:    #46443f;
    --nh-body:        #4a4845;
    --nh-muted:       rgba(35, 34, 32, .55);
    --nh-line:        rgba(35, 34, 32, .12);

    /* Flaechen */
    --nh-bg:          #ffffff;
    --nh-bg-soft:     #f7f4f0;
    --nh-bg-dark:     #232220;

    /* Schrift */
    --nh-font-head:   'Oswald', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    --nh-font-body:   'Lora', Georgia, 'Times New Roman', serif;

    --nh-fs-body:     1.125rem;   /* 18px – wie im Original */
    --nh-lh-body:     1.95;

    /* Fluide Schriftgroessen: unten = 390px, oben = 1440px */
    --nh-fs-display:  clamp(2.5rem, 1.05rem + 6.2vw, 5.625rem);   /* 40 → 90px */
    --nh-fs-display-s:clamp(2.25rem, 1.2rem + 4.4vw, 3.75rem);    /* 36 → 60px */
    --nh-fs-h2:       clamp(1.875rem, 1.05rem + 3.5vw, 3.125rem); /* 30 → 50px */
    --nh-fs-h3:       clamp(1.0625rem, .95rem + .5vw, 1.25rem);   /* 17 → 20px */
    --nh-fs-eyebrow:  clamp(.8125rem, .74rem + .32vw, 1.25rem);   /* 13 → 20px */
    --nh-fs-lead:     clamp(1.125rem, 1rem + .5vw, 1.375rem);     /* 18 → 22px */

    --nh-track-wide:  .1875em;   /* 3px bei 16px – wie im Original */

    /* Raster */
    --nh-container:   1080px;
    --nh-container-wide: 1280px;
    --nh-gutter:      clamp(1.25rem, .6rem + 2.6vw, 2.5rem);

    /* Abstaende */
    --nh-space-section:      clamp(3.5rem, 2rem + 6vw, 5.5rem);
    --nh-space-section-lg:   clamp(4.5rem, 2.5rem + 8vw, 7.5rem);
    --nh-space-section-sm:   clamp(2rem, 1.2rem + 3.5vw, 3.25rem);

    /* Sonstiges */
    --nh-radius:      14px;
    --nh-radius-pill: 100px;
    --nh-shadow-sm:   0 2px 10px rgba(35, 34, 32, .07);
    --nh-shadow:      0 12px 34px -14px rgba(35, 34, 32, .30);
    --nh-shadow-lg:   0 30px 70px -30px rgba(35, 34, 32, .45);
    --nh-ease:        cubic-bezier(.22, .61, .36, 1);
    --nh-header-h:    104px;
    --nh-header-h-sticky: 68px;
}

/* -------------------------------------------------------------- 2. Base -- */

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

html {
    -webkit-text-size-adjust: 100%;
    scroll-behavior: smooth;
    scroll-padding-top: calc(var(--nh-header-h-sticky) + 1rem);
}

body {
    margin: 0;
    background: var(--nh-bg);
    color: var(--nh-body);
    font-family: var(--nh-font-body);
    font-size: var(--nh-fs-body);
    line-height: var(--nh-lh-body);
    font-weight: 400;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/*  Hinweis: Auf <html> und <body> wird bewusst KEIN overflow gesetzt.
    Beides wuerde an den Viewport durchgereicht und je nach Browser das
    senkrechte Scrollen unterbinden. Waagerechte Ueberlaeufe (etwa durch die
    Einblend-Animationen) fangen stattdessen die einzelnen Abschnitte ab –
    siehe .nh-section weiter unten. */

img, video, svg, picture { max-width: 100%; height: auto; display: block; }

a {
    color: var(--nh-blue);
    text-decoration-color: color-mix(in srgb, var(--nh-blue) 35%, transparent);
    text-underline-offset: .18em;
    transition: color .25s var(--nh-ease), text-decoration-color .25s var(--nh-ease);
}
a:hover { color: var(--nh-copper); text-decoration-color: currentColor; }

:focus-visible {
    outline: 3px solid var(--nh-copper);
    outline-offset: 3px;
    border-radius: 4px;
}

::selection { background: var(--nh-blue); color: #fff; }

hr {
    border: 0;
    border-top: 1px solid var(--nh-line);
    margin: 2.5rem 0;
}

/* Sprungmarke fuer die Tastaturbedienung */
.nh-skip {
    position: absolute;
    left: -9999px;
    top: 0;
    z-index: 999;
    background: var(--nh-blue);
    color: #fff;
    padding: .9rem 1.4rem;
    font-family: var(--nh-font-head);
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    font-size: .875rem;
}
.nh-skip:focus { left: 1rem; top: 1rem; color: #fff; }

.nh-visually-hidden {
    position: absolute !important;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

/* -------------------------------------------------------- 3. Typografie -- */

h1, h2, h3, h4, h5, h6 {
    margin: 0 0 .6em;
    color: var(--nh-ink);
    font-weight: 400;
    line-height: 1.25;
    text-wrap: balance;
}

.nh-display {
    font-family: var(--nh-font-body);
    font-weight: 700;
    font-size: var(--nh-fs-display);
    line-height: 1.12;
    letter-spacing: .01em;
}

.nh-h2,
.nh-section__heading {
    font-family: var(--nh-font-body);
    font-weight: 700;
    font-size: var(--nh-fs-h2);
    line-height: 1.22;
    color: var(--nh-ink);
    margin: 0 0 .5em;
}

.nh-h3,
h3 {
    font-family: var(--nh-font-head);
    font-weight: 500;
    font-size: var(--nh-fs-h3);
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    line-height: 1.5;
    color: var(--nh-ink);
}

/* Kleine Ueberzeile ueber der Ueberschrift */
.nh-eyebrow {
    display: block;
    font-family: var(--nh-font-head);
    font-weight: 400;
    font-size: var(--nh-fs-eyebrow);
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    color: var(--nh-muted);
    margin: 0 0 .85rem;
}
.nh-eyebrow--accent { color: var(--nh-blue); }

.nh-lead { font-size: var(--nh-fs-lead); line-height: 1.75; }

.nh-prose > *:first-child { margin-top: 0; }
.nh-prose > *:last-child  { margin-bottom: 0; }
.nh-prose p { margin: 0 0 1.35em; }
.nh-prose h2 { font-family: var(--nh-font-body); font-weight: 700; font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.125rem); margin: 2em 0 .6em; }
.nh-prose h3 { margin: 2em 0 .7em; }
.nh-prose h4 {
    font-family: var(--nh-font-head); font-weight: 500; text-transform: uppercase;
    letter-spacing: var(--nh-track-wide); font-size: 1rem; margin: 1.8em 0 .6em;
}
.nh-prose ul,
.nh-prose ol { margin: 0 0 1.35em; padding-left: 1.35em; }
.nh-prose li { margin-bottom: .55em; }
.nh-prose ul { list-style: none; padding-left: 0; }
.nh-prose ul > li {
    position: relative;
    padding-left: 1.7em;
}
.nh-prose ul > li::before {
    content: "";
    position: absolute;
    left: .25em;
    top: .82em;
    width: .55em;
    height: 2px;
    background: var(--nh-copper);
}
.nh-prose ol { list-style: decimal; }
.nh-prose blockquote {
    margin: 2em 0;
    padding: .3em 0 .3em 1.6em;
    border-left: 3px solid var(--nh-copper);
    font-style: italic;
    color: var(--nh-ink-soft);
}
.nh-prose table {
    width: 100%;
    border-collapse: collapse;
    margin: 0 0 1.5em;
    font-size: .95em;
}
.nh-prose th,
.nh-prose td { padding: .7em .9em; border-bottom: 1px solid var(--nh-line); text-align: left; }
.nh-prose th { font-family: var(--nh-font-head); text-transform: uppercase; letter-spacing: .08em; font-size: .85em; }
.nh-prose img { border-radius: var(--nh-radius); margin: 1.5em 0; }
.nh-prose--justify p { text-align: justify; hyphens: auto; }

.nh-text-left   { text-align: left; }
.nh-text-center { text-align: center; }
.nh-text-right  { text-align: right; }

/* ------------------------------------------------------------ 4. Layout -- */

.nh-container {
    width: 100%;
    max-width: calc(var(--nh-container) + 2 * var(--nh-gutter));
    margin-inline: auto;
    padding-inline: var(--nh-gutter);
}
.nh-container--wide { max-width: calc(var(--nh-container-wide) + 2 * var(--nh-gutter)); }
.nh-container--narrow { max-width: calc(760px + 2 * var(--nh-gutter)); }

.nh-section {
    position: relative;
    padding-block: var(--nh-space-section);
    background-color: var(--nh-bg);
    /* Die Einblend-Animationen verschieben Bloecke kurz zur Seite.
       Der Abschnitt schneidet das ab, damit die Seite nie waagerecht scrollt. */
    overflow-x: clip;
}
@supports not (overflow-x: clip) {
    .nh-section, .nh-cta { overflow-x: hidden; }
}
.nh-section--soft { background-color: var(--nh-bg-soft); }
.nh-section--dark { background-color: var(--nh-bg-dark); color: rgba(255,255,255,.82); }
.nh-section--dark h1,
.nh-section--dark h2,
.nh-section--dark h3,
.nh-section--dark .nh-section__heading { color: #fff; }
.nh-section--dark .nh-eyebrow { color: var(--nh-copper-light); }

.nh-section--pad-none   { padding-block: 0; }
.nh-section--pad-sm     { padding-block: var(--nh-space-section-sm); }
.nh-section--pad-lg     { padding-block: var(--nh-space-section-lg); }
.nh-section--pt-none    { padding-top: 0; }
.nh-section--pb-none    { padding-bottom: 0; }
.nh-section--pt-sm      { padding-top: var(--nh-space-section-sm); }
.nh-section--pb-sm      { padding-bottom: var(--nh-space-section-sm); }
.nh-section--pt-lg      { padding-top: var(--nh-space-section-lg); }
.nh-section--pb-lg      { padding-bottom: var(--nh-space-section-lg); }

.nh-section__head {
    max-width: 640px;
    margin-bottom: clamp(2rem, 1rem + 3vw, 3.25rem);
}
.nh-section__head--center { margin-inline: auto; text-align: center; }
.nh-section__head--right  { margin-left: auto; text-align: right; }
.nh-section__head > *:last-child { margin-bottom: 0; }

.nh-grid { display: grid; gap: clamp(1.5rem, .9rem + 2.4vw, 2.75rem); }
.nh-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.nh-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.nh-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

@media (max-width: 980px) {
    .nh-grid--3,
    .nh-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
    .nh-grid--2,
    .nh-grid--3,
    .nh-grid--4 { grid-template-columns: minmax(0, 1fr); }
}

/* --------------------------------------------------------- 5. Buttons ---- */

.nh-btn {
    --btn-bg: var(--nh-blue);
    --btn-bg-hover: var(--nh-copper);
    --btn-fg: #ffffff;
    --btn-border: transparent;

    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .55em;
    padding: .9em 2em;
    /* Mindestgröße für eine sichere Bedienung per Finger. */
    min-height: 46px;
    border: 2px solid var(--btn-border);
    border-radius: var(--nh-radius-pill);
    background: var(--btn-bg);
    color: var(--btn-fg) !important;
    font-family: var(--nh-font-head);
    font-weight: 500;
    font-size: 1rem;
    line-height: 1.15;
    letter-spacing: var(--nh-track-wide);
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
    isolation: isolate;
    transition: background-color .3s var(--nh-ease), color .3s var(--nh-ease),
                border-color .3s var(--nh-ease), transform .3s var(--nh-ease),
                box-shadow .3s var(--nh-ease), padding .3s var(--nh-ease);
}

/* Pfeil, der beim Hover einfaehrt – wie in der bisherigen Fassung */
.nh-btn::after {
    content: "";
    width: 0;
    margin-right: -.55em;
    opacity: 0;
    background: currentColor;
    -webkit-mask: var(--nh-arrow) no-repeat center / contain;
            mask: var(--nh-arrow) no-repeat center / contain;
    height: .72em;
    transition: width .3s var(--nh-ease), opacity .3s var(--nh-ease), margin .3s var(--nh-ease);
}
.nh-btn:hover::after,
.nh-btn:focus-visible::after { width: .72em; margin-right: 0; opacity: 1; }

:root {
    --nh-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8.5 1.5 15 8l-6.5 6.5-1.06-1.06L11.88 8.75H1v-1.5h10.88L7.44 2.56z'/%3E%3C/svg%3E");
}

.nh-btn:hover,
.nh-btn:focus-visible {
    background: var(--btn-bg-hover);
    transform: translateY(-2px);
    box-shadow: 0 10px 26px -12px color-mix(in srgb, var(--btn-bg-hover) 85%, transparent);
}
.nh-btn:active { transform: translateY(0); }

.nh-btn--ghost {
    --btn-bg: rgba(255, 255, 255, .16);
    --btn-bg-hover: var(--nh-copper-light);
    --btn-border: rgba(255, 255, 255, .55);
    backdrop-filter: blur(6px);
}
.nh-btn--ghost:hover { --btn-border: transparent; }

.nh-btn--outline {
    --btn-bg: transparent;
    --btn-fg: var(--nh-blue);
    --btn-border: var(--nh-blue);
    --btn-bg-hover: var(--nh-blue);
}
.nh-btn--outline:hover,
.nh-btn--outline:focus-visible { --btn-fg: #ffffff; --btn-border: var(--nh-blue); }

.nh-btn--copper { --btn-bg: var(--nh-copper); --btn-bg-hover: var(--nh-blue); }

.nh-btn--sm { padding: .68em 1.5em; font-size: .875rem; }
.nh-btn--block { display: flex; width: 100%; justify-content: center; }

.nh-btn-row {
    display: flex;
    flex-wrap: wrap;
    gap: .9rem;
    margin-top: 1.9rem;
}
.nh-text-center .nh-btn-row,
.nh-section__head--center .nh-btn-row { justify-content: center; }
.nh-text-right .nh-btn-row { justify-content: flex-end; }

/* Textlink mit Pfeil */
.nh-link {
    display: inline-flex;
    align-items: center;
    gap: .5em;
    font-family: var(--nh-font-head);
    font-size: .95rem;
    text-transform: uppercase;
    letter-spacing: .12em;
    text-decoration: none;
    color: var(--nh-blue);
}
.nh-link::after {
    content: "";
    width: .7em; height: .7em;
    background: currentColor;
    -webkit-mask: var(--nh-arrow) no-repeat center / contain;
            mask: var(--nh-arrow) no-repeat center / contain;
    transition: transform .3s var(--nh-ease);
}
.nh-link:hover::after { transform: translateX(4px); }

/* ---------------------------------------------------- 6. Kopf & Menue ---- */

.nh-header {
    position: sticky;
    top: 0;
    z-index: 100;
    background: rgba(255, 255, 255, .94);
    backdrop-filter: saturate(160%) blur(12px);
    border-bottom: 1px solid transparent;
    transition: box-shadow .3s var(--nh-ease), border-color .3s var(--nh-ease),
                background-color .3s var(--nh-ease);
}
.nh-header.is-stuck {
    box-shadow: 0 6px 26px -18px rgba(35, 34, 32, .55);
    border-bottom-color: var(--nh-line);
}

.nh-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    min-height: var(--nh-header-h);
    transition: min-height .3s var(--nh-ease);
}
.nh-header.is-stuck .nh-header__inner { min-height: var(--nh-header-h-sticky); }

.nh-logo {
    display: inline-flex;
    align-items: center;
    gap: .85rem;
    flex-shrink: 0;
    text-decoration: none;
    color: var(--nh-ink);
}
.nh-logo img {
    height: 72px;
    width: auto;
    transition: height .3s var(--nh-ease);
}
.nh-header.is-stuck .nh-logo img { height: 48px; }
.nh-logo__text {
    display: none;
    font-family: var(--nh-font-head);
    text-transform: uppercase;
    letter-spacing: .1em;
    font-size: .95rem;
    line-height: 1.3;
    color: var(--nh-ink);
}

/* Hauptnavigation (Desktop) */
.nh-nav { display: flex; }
.nh-nav__list {
    display: flex;
    align-items: center;
    gap: clamp(.4rem, -.4rem + 1.6vw, 1.5rem);
    margin: 0;
    padding: 0;
    list-style: none;
}
.nh-nav__item { position: relative; }
.nh-nav__link {
    display: inline-flex;
    align-items: center;
    gap: .4em;
    padding: .7rem .3rem;
    font-family: var(--nh-font-head);
    font-weight: 400;
    font-size: .875rem;
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    text-decoration: none;
    color: var(--nh-ink);
    white-space: nowrap;
    transition: color .25s var(--nh-ease);
}
.nh-nav__link::before {
    content: "";
    position: absolute;
    left: .3rem; right: .3rem;
    bottom: .3rem;
    height: 2px;
    background: var(--nh-blue);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .35s var(--nh-ease);
}
.nh-nav__link:hover,
.nh-nav__item.is-active > .nh-nav__link { color: var(--nh-blue); }
.nh-nav__link:hover::before,
.nh-nav__item.is-active > .nh-nav__link::before { transform: scaleX(1); }

.nh-nav__caret {
    width: .5em; height: .5em;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg) translateY(-.12em);
    transition: transform .3s var(--nh-ease);
}
.nh-nav__item:hover > .nh-nav__link .nh-nav__caret { transform: rotate(225deg) translateY(-.18em); }

/* Untermenue */
.nh-nav__sub {
    position: absolute;
    top: calc(100% + .2rem);
    left: 50%;
    min-width: 230px;
    margin: 0;
    padding: .5rem;
    list-style: none;
    background: #fff;
    border-radius: var(--nh-radius);
    box-shadow: var(--nh-shadow);
    opacity: 0;
    visibility: hidden;
    transform: translate(-50%, 10px);
    transition: opacity .25s var(--nh-ease), transform .25s var(--nh-ease), visibility .25s;
}
.nh-nav__item:hover > .nh-nav__sub,
.nh-nav__item:focus-within > .nh-nav__sub {
    opacity: 1;
    visibility: visible;
    transform: translate(-50%, 0);
}
.nh-nav__sub .nh-nav__link {
    display: block;
    padding: .65rem .9rem;
    border-radius: 8px;
    white-space: normal;
    font-size: .8125rem;
}
.nh-nav__sub .nh-nav__link::before { display: none; }
.nh-nav__sub .nh-nav__link:hover { background: var(--nh-blue-soft); }

.nh-header__actions { display: flex; align-items: center; gap: .8rem; }
.nh-header__cta { flex-shrink: 0; }

/* Mobiles Menue */
.nh-burger {
    display: none;
    width: 46px; height: 46px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    cursor: pointer;
    align-items: center;
    justify-content: center;
    transition: background-color .25s var(--nh-ease);
}
.nh-burger:hover { background: var(--nh-blue-soft); }
.nh-burger__box { position: relative; width: 24px; height: 16px; }
.nh-burger__box span {
    position: absolute;
    left: 0;
    width: 100%;
    height: 2px;
    background: var(--nh-ink);
    border-radius: 2px;
    transition: transform .32s var(--nh-ease), opacity .2s var(--nh-ease), top .32s var(--nh-ease);
}
.nh-burger__box span:nth-child(1) { top: 0; }
.nh-burger__box span:nth-child(2) { top: 7px; }
.nh-burger__box span:nth-child(3) { top: 14px; }
.nh-burger[aria-expanded="true"] .nh-burger__box span:nth-child(1) { top: 7px; transform: rotate(45deg); }
.nh-burger[aria-expanded="true"] .nh-burger__box span:nth-child(2) { opacity: 0; }
.nh-burger[aria-expanded="true"] .nh-burger__box span:nth-child(3) { top: 7px; transform: rotate(-45deg); }

.nh-mobile-nav {
    position: fixed;
    inset: 0;
    z-index: 99;
    display: flex;
    flex-direction: column;
    padding: calc(var(--nh-header-h) + 1rem) var(--nh-gutter) 2rem;
    background: #fff;
    overflow-y: auto;
    overscroll-behavior: contain;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-12px);
    transition: opacity .3s var(--nh-ease), transform .3s var(--nh-ease), visibility .3s;
}
.nh-mobile-nav.is-open { opacity: 1; visibility: visible; transform: none; }
body.nh-nav-open { overflow: hidden; }

.nh-mobile-nav__list { list-style: none; margin: 0; padding: 0; }
.nh-mobile-nav__item { border-bottom: 1px solid var(--nh-line); }
.nh-mobile-nav__row { display: flex; align-items: center; }
.nh-mobile-nav__link {
    flex: 1;
    display: block;
    padding: 1.05rem .2rem;
    font-family: var(--nh-font-head);
    font-size: 1.0625rem;
    text-transform: uppercase;
    letter-spacing: .12em;
    text-decoration: none;
    color: var(--nh-ink);
}
.nh-mobile-nav__item.is-active > .nh-mobile-nav__row > .nh-mobile-nav__link { color: var(--nh-blue); }
.nh-mobile-nav__toggle {
    width: 46px; height: 46px;
    flex-shrink: 0;
    border: 0;
    background: transparent;
    color: var(--nh-ink);
    cursor: pointer;
    display: grid;
    place-items: center;
}
.nh-mobile-nav__toggle::before {
    content: "";
    width: .55em; height: .55em;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg) translateY(-.1em);
    transition: transform .3s var(--nh-ease);
}
.nh-mobile-nav__toggle[aria-expanded="true"]::before { transform: rotate(225deg) translateY(-.15em); }

.nh-mobile-nav__sub {
    list-style: none;
    margin: 0;
    padding: 0 0 .6rem .9rem;
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows .35s var(--nh-ease);
}
.nh-mobile-nav__sub > div { overflow: hidden; }
.nh-mobile-nav__sub.is-open { grid-template-rows: 1fr; }
.nh-mobile-nav__sub .nh-mobile-nav__link {
    padding: .7rem .2rem;
    font-size: .9375rem;
    letter-spacing: .1em;
    color: var(--nh-ink-soft);
}

.nh-mobile-nav__foot {
    margin-top: auto;
    padding-top: 2rem;
    display: grid;
    gap: .8rem;
}
.nh-mobile-nav__meta {
    font-size: .95rem;
    color: var(--nh-muted);
}
.nh-mobile-nav__meta a { color: var(--nh-blue); }

@media (max-width: 1100px) {
    .nh-nav, .nh-header__cta { display: none; }
    .nh-burger { display: inline-flex; }
}
@media (min-width: 1101px) {
    .nh-mobile-nav { display: none; }
}
@media (min-width: 480px) {
    .nh-logo__text { display: block; }
}

/* ------------------------------------------------------------- 7. Hero -- */

.nh-hero {
    position: relative;
    display: flex;
    align-items: center;
    overflow: hidden;
    isolation: isolate;
    background: var(--nh-bg-dark);
    color: #fff;
    min-height: clamp(420px, 62vw, 724px);
    padding-block: clamp(4rem, 8vw, 7rem);
}
.nh-hero--tall    { min-height: clamp(460px, 68vw, 724px); }
.nh-hero--medium  { min-height: clamp(380px, 52vw, 560px); }
.nh-hero--short   { min-height: clamp(280px, 34vw, 400px); }
.nh-hero--compact { min-height: clamp(220px, 26vw, 300px); }

.nh-hero__media {
    position: absolute;
    inset: 0;
    z-index: -2;
    overflow: hidden;
}
.nh-hero__media img,
.nh-hero__media video {
    width: 100%;
    height: 100%;
    /* Beides ist im Adminbereich unter "Bildausschnitt" einstellbar:
       --nh-fit   = cover (fuellt die Flaeche) | contain (zeigt das ganze Bild)
       --nh-focus = Punkt, der beim Zuschneiden immer sichtbar bleibt */
    object-fit: var(--nh-fit, cover);
    object-position: var(--nh-focus, 50% 50%);
}

/* "Ganzes Bild zeigen": freie Raender bekommen den dunklen Grund. */
.nh-hero--contain .nh-hero__media { background: var(--nh-bg-dark); }

/* Sanftes Heranzoomen des Hintergrunds – Nachbau des bisherigen Effekts */
.nh-hero--zoom .nh-hero__media img,
.nh-hero--zoom .nh-hero__media video {
    animation: nh-bg-zoom 18s ease-in-out infinite alternate;
    will-change: transform;
}
@keyframes nh-bg-zoom {
    from { transform: scale(1); }
    to   { transform: scale(1.09); }
}

.nh-hero__overlay {
    position: absolute;
    inset: 0;
    z-index: -1;
    background:
        linear-gradient(180deg, rgba(35,34,32,.42) 0%, rgba(35,34,32,.06) 38%, rgba(35,34,32,.55) 100%);
}
.nh-hero__overlay[data-strength="0"] { display: none; }

.nh-hero__inner { position: relative; width: 100%; }
.nh-hero__content { max-width: 720px; }
.nh-hero--center .nh-hero__content { margin-inline: auto; text-align: center; }
.nh-hero--right  .nh-hero__content { margin-left: auto; text-align: right; }

.nh-hero__eyebrow {
    display: block;
    font-family: var(--nh-font-head);
    font-weight: 400;
    font-size: clamp(.875rem, .8rem + .3vw, 1.25rem);
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    color: var(--nh-hero-accent, #fff);
    margin: 0 0 .5rem;
}
.nh-hero__title {
    font-family: var(--nh-font-body);
    font-weight: 700;
    font-size: var(--nh-fs-display);
    line-height: 1.14;
    letter-spacing: .01em;
    color: var(--nh-hero-accent, #fff);
    margin: 0;
    text-shadow: 0 .06em .18em rgba(0, 0, 0, .35);
}
.nh-hero--sm .nh-hero__title { font-size: var(--nh-fs-display-s); }
.nh-hero__text {
    margin: 1.4rem 0 0;
    font-size: var(--nh-fs-lead);
    line-height: 1.8;
    color: rgba(255, 255, 255, .92);
    max-width: 46ch;
}
.nh-hero--center .nh-hero__text { margin-inline: auto; }
.nh-hero--right  .nh-hero__text { margin-left: auto; }

/* Hero in Markenblau (wie im Original) statt in Weiss */
.nh-hero--accent { --nh-hero-accent: var(--nh-blue); }

.nh-hero__scroll {
    position: absolute;
    left: 50%;
    bottom: clamp(1.2rem, 3vw, 2.6rem);
    z-index: 4;                       /* ueber dem diagonalen Abschluss */
    width: 32px; height: 52px;
    margin-left: -16px;
    border: 2px solid rgba(255, 255, 255, .95);
    border-radius: 16px;
    /* Dunkle Fuellung + Schatten: bleibt auf hellen Fotos und auf dem
       weissen Diagonal-Abschluss gleichermassen erkennbar. */
    background: rgba(28, 27, 25, .42);
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
    box-shadow: 0 8px 24px -6px rgba(0, 0, 0, .55), 0 0 0 1px rgba(28, 27, 25, .18);
    cursor: pointer;
    padding: 0;
    transition: background-color .25s var(--nh-ease), transform .25s var(--nh-ease),
                border-color .25s var(--nh-ease);
}

/* Unsichtbare Vergroesserung der Trefferflaeche auf mind. 44 x 64 px. */
.nh-hero__scroll::before {
    content: "";
    position: absolute;
    inset: -8px -10px;
    border-radius: 22px;
}

/* Das wandernde Raedchen im Inneren. */
.nh-hero__scroll::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 9px;
    width: 4px; height: 8px;
    margin-left: -2px;
    border-radius: 2px;
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .5);
    animation: nh-scroll-hint 1.9s var(--nh-ease) infinite;
}

.nh-hero__scroll:hover {
    background: rgba(12, 113, 195, .85);
    border-color: #fff;
    transform: translateY(3px);
}
.nh-hero__scroll:focus-visible {
    outline: 3px solid #fff;
    outline-offset: 3px;
}

/* Liegt unter dem Hero der diagonale Abschluss, wandert der Hinweis
   darueber - sonst stuende die weisse Kontur auf weissem Grund. */
.nh-hero:has(.nh-divider-ramp) .nh-hero__scroll {
    bottom: calc(clamp(38px, 6vw, 100px) + .75rem);
}

@keyframes nh-scroll-hint {
    0%, 100% { transform: translateY(0);    opacity: 1; }
    60%      { transform: translateY(16px); opacity: 0; }
}

/* Auf schmalen Bildschirmen wird ein Querformat-Foto im Hero besonders
   stark beschnitten. Etwas mehr Hoehe laesst mehr vom Motiv uebrig. */
@media (max-width: 560px) {
    .nh-hero--tall    { min-height: min(78dvh, 620px); }
    .nh-hero--medium  { min-height: min(62dvh, 500px); }
    .nh-hero--short   { min-height: min(46dvh, 380px); }
    .nh-hero--compact { min-height: min(34dvh, 280px); }
    .nh-hero--contain { min-height: 0; padding-block: clamp(2.5rem, 9vw, 4rem); }
    .nh-hero--contain .nh-hero__media { position: relative; }
    .nh-hero--contain .nh-hero__media img { height: auto; max-height: 60dvh; }
}

/* Diagonaler Abschluss unter dem Hero (Original: "Ramp"-Divider) */
.nh-divider-ramp {
    position: absolute;
    left: 0;
    right: 0;
    bottom: -1px;
    z-index: 3;
    height: clamp(38px, 6vw, 100px);
    pointer-events: none;
}
.nh-divider-ramp svg { width: 100%; height: 100%; display: block; }

/* ------------------------------------------- 8. Bausteine / Sections ----- */

/* --- Text + Bild ------------------------------------------------------- */
.nh-media-text {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: center;
    gap: clamp(2rem, 1rem + 4vw, 4.5rem);
}
.nh-media-text--reverse .nh-media-text__media { order: 2; }
.nh-media-text__media {
    position: relative;
    border-radius: var(--nh-radius);
    overflow: hidden;
    box-shadow: var(--nh-shadow);
}
.nh-media-text__media img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.nh-media-text__body > *:last-child { margin-bottom: 0; }
.nh-media-text__title {
    font-family: var(--nh-font-body);
    font-weight: 700;
    font-size: clamp(1.6rem, 1.15rem + 1.9vw, 2.5rem);
    line-height: 1.2;
    margin: 0 0 .7em;
    color: var(--nh-ink);
}
@media (max-width: 860px) {
    .nh-media-text { grid-template-columns: minmax(0, 1fr); }
    .nh-media-text--reverse .nh-media-text__media { order: 0; }
}

/* Video neben dem Text (statt eines Bildes) */
.nh-media-text__video {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--nh-radius);
    background: var(--nh-bg-dark);
    box-shadow: var(--nh-shadow);
}

/* --- Textspalten ------------------------------------------------------- */
.nh-textcol { display: grid; gap: clamp(2rem, 1rem + 3.5vw, 3.5rem); }
.nh-textcol__item > *:last-child { margin-bottom: 0; }
.nh-textcol__title {
    font-family: var(--nh-font-head);
    font-weight: 500;
    font-size: var(--nh-fs-h3);
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    margin: 0 0 .9em;
}

/* --- Karten ------------------------------------------------------------ */
.nh-card {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: clamp(1.5rem, 1rem + 1.6vw, 2.25rem);
    background: #fff;
    border: 1px solid var(--nh-line);
    border-radius: var(--nh-radius);
    box-shadow: var(--nh-shadow-sm);
    transition: transform .35s var(--nh-ease), box-shadow .35s var(--nh-ease), border-color .35s var(--nh-ease);
}
.nh-card:hover {
    transform: translateY(-5px);
    box-shadow: var(--nh-shadow);
    border-color: color-mix(in srgb, var(--nh-blue) 25%, transparent);
}
.nh-section--soft .nh-card { background: #fff; }
.nh-card__media {
    margin: calc(-1 * clamp(1.5rem, 1rem + 1.6vw, 2.25rem)) calc(-1 * clamp(1.5rem, 1rem + 1.6vw, 2.25rem)) 1.5rem;
    overflow: hidden;
    border-radius: var(--nh-radius) var(--nh-radius) 0 0;
}
.nh-card__media img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    transition: transform .6s var(--nh-ease);
}
.nh-card:hover .nh-card__media img { transform: scale(1.05); }
.nh-card__title {
    font-family: var(--nh-font-head);
    font-weight: 500;
    font-size: var(--nh-fs-h3);
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    line-height: 1.45;
    margin: 0 0 .3em;
    color: var(--nh-ink);
}
.nh-card__subtitle {
    display: block;
    font-family: var(--nh-font-head);
    font-size: .8125rem;
    text-transform: uppercase;
    letter-spacing: .14em;
    color: var(--nh-copper);
    margin: 0 0 .9em;
}
.nh-card__body { font-size: 1rem; line-height: 1.8; }
.nh-card__body > *:last-child { margin-bottom: 0; }
.nh-card__foot { margin-top: auto; padding-top: 1.4rem; }

/* Vorstandskarte mit Initialen-Medaillon */
.nh-card--person { text-align: left; }
.nh-card__avatar {
    width: 68px; height: 68px;
    margin-bottom: 1.2rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--nh-blue-soft);
    color: var(--nh-blue);
    font-family: var(--nh-font-head);
    font-size: 1.35rem;
    letter-spacing: .05em;
    overflow: hidden;
}
.nh-card__avatar img { width: 100%; height: 100%; object-fit: cover; }

/* --- Icon-Boxen -------------------------------------------------------- */
.nh-iconcard {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: .35rem;
    padding: clamp(1.6rem, 1rem + 2vw, 2.5rem) 1.4rem;
    background: #fff;
    border: 1px solid var(--nh-line);
    border-radius: var(--nh-radius);
    height: 100%;
    transition: transform .35s var(--nh-ease), box-shadow .35s var(--nh-ease);
}
.nh-iconcard:hover { transform: translateY(-5px); box-shadow: var(--nh-shadow); }
.nh-iconcard__icon {
    width: 80px; height: 80px;
    margin-bottom: 1.1rem;
    display: grid;
    place-items: center;
}
.nh-iconcard__icon img { width: 100%; height: 100%; object-fit: contain; }
.nh-iconcard__title {
    font-family: var(--nh-font-head);
    font-size: var(--nh-fs-h3);
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    margin: 0 0 .5em;
}
.nh-iconcard__body { font-size: 1rem; line-height: 1.75; margin-bottom: 1.2rem; }
.nh-iconcard__body > *:last-child { margin-bottom: 0; }
.nh-iconcard .nh-btn-row { margin-top: auto; }

/* --- Galerie ----------------------------------------------------------- */
.nh-gallery { display: grid; gap: clamp(1rem, .6rem + 1.6vw, 1.75rem); }
.nh-gallery__item {
    position: relative;
    display: block;
    border-radius: var(--nh-radius);
    overflow: hidden;
    background: var(--nh-bg-dark);
    text-decoration: none;
    box-shadow: var(--nh-shadow-sm);
    transition: transform .4s var(--nh-ease), box-shadow .4s var(--nh-ease);
}
.nh-gallery__item:hover { transform: translateY(-4px); box-shadow: var(--nh-shadow); }
.nh-gallery__item img {
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    transition: transform .7s var(--nh-ease), opacity .4s var(--nh-ease);
}
.nh-gallery__item:hover img { transform: scale(1.06); }
.nh-gallery__caption {
    position: absolute;
    inset: auto 0 0 0;
    padding: 2.6rem 1.2rem 1.1rem;
    background: linear-gradient(to top, rgba(35,34,32,.88), rgba(35,34,32,0));
    color: #fff;
    font-family: var(--nh-font-head);
    font-size: .9375rem;
    text-transform: uppercase;
    letter-spacing: .1em;
    line-height: 1.45;
}
.nh-gallery__group + .nh-gallery__group { margin-top: clamp(2.5rem, 1.5rem + 3vw, 4rem); }
.nh-gallery__group-title {
    font-family: var(--nh-font-body);
    font-weight: 700;
    font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem);
    margin: 0 0 1.5rem;
}

/* Lightbox */
.nh-lightbox {
    position: fixed;
    inset: 0;
    z-index: 200;
    display: grid;
    place-items: center;
    padding: clamp(1rem, 4vw, 3rem);
    background: rgba(20, 19, 18, .93);
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s var(--nh-ease), visibility .3s;
}
.nh-lightbox.is-open { opacity: 1; visibility: visible; }
.nh-lightbox img {
    max-width: 100%;
    max-height: 82vh;
    border-radius: 8px;
    box-shadow: var(--nh-shadow-lg);
}
.nh-lightbox__caption {
    margin-top: 1rem;
    color: rgba(255, 255, 255, .82);
    font-family: var(--nh-font-head);
    text-transform: uppercase;
    letter-spacing: .1em;
    font-size: .875rem;
    text-align: center;
}
.nh-lightbox__close,
.nh-lightbox__nav {
    position: absolute;
    display: grid;
    place-items: center;
    width: 48px; height: 48px;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .12);
    color: #fff;
    font-size: 1.4rem;
    cursor: pointer;
    transition: background-color .25s var(--nh-ease);
}
.nh-lightbox__close:hover,
.nh-lightbox__nav:hover { background: rgba(255, 255, 255, .25); }
.nh-lightbox__close { top: 1.2rem; right: 1.2rem; }
.nh-lightbox__nav--prev { left: 1.2rem; top: 50%; margin-top: -24px; }
.nh-lightbox__nav--next { right: 1.2rem; top: 50%; margin-top: -24px; }

/* --- Zeitstrahl -------------------------------------------------------- */
.nh-timeline { position: relative; }
.nh-timeline::before {
    content: "";
    position: absolute;
    left: 27px;
    top: .5rem;
    bottom: .5rem;
    width: 2px;
    background: linear-gradient(180deg, var(--nh-blue), var(--nh-copper));
    opacity: .35;
}
.nh-timeline__item {
    position: relative;
    padding-left: 74px;
    padding-bottom: clamp(2.2rem, 1.4rem + 2.5vw, 3.5rem);
}
.nh-timeline__item:last-child { padding-bottom: 0; }
.nh-timeline__marker {
    position: absolute;
    left: 0;
    top: 0;
    width: 56px; height: 56px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--nh-blue);
    color: #fff;
    font-family: var(--nh-font-head);
    font-size: 1.25rem;
    box-shadow: 0 0 0 6px var(--nh-bg);
}
.nh-section--soft .nh-timeline__marker { box-shadow: 0 0 0 6px var(--nh-bg-soft); }
.nh-timeline__date {
    display: inline-block;
    font-family: var(--nh-font-head);
    font-size: .8125rem;
    text-transform: uppercase;
    letter-spacing: .14em;
    color: var(--nh-copper);
    margin-bottom: .5rem;
}
.nh-timeline__title {
    font-family: var(--nh-font-body);
    font-weight: 700;
    font-size: clamp(1.35rem, 1.1rem + 1vw, 1.75rem);
    margin: 0 0 .7rem;
}
.nh-timeline__card {
    display: grid;
    grid-template-columns: minmax(0, 280px) minmax(0, 1fr);
    gap: clamp(1.25rem, .8rem + 1.8vw, 2.25rem);
    align-items: start;
}
.nh-timeline__card--no-media { grid-template-columns: minmax(0, 1fr); }
.nh-timeline__media {
    border-radius: var(--nh-radius);
    overflow: hidden;
    box-shadow: var(--nh-shadow-sm);
}
.nh-timeline__media img {
    width: 100%;
    transition: transform .6s var(--nh-ease);
}
.nh-timeline__media:hover img { transform: scale(1.04); }
.nh-timeline__body > *:last-child { margin-bottom: 0; }
@media (max-width: 760px) {
    .nh-timeline::before { left: 19px; }
    .nh-timeline__item { padding-left: 56px; }
    .nh-timeline__marker { width: 40px; height: 40px; font-size: 1rem; }
    .nh-timeline__card { grid-template-columns: minmax(0, 1fr); }
}

/* --- FAQ / Akkordeon --------------------------------------------------- */
.nh-faq { display: grid; gap: .75rem; }
.nh-faq__item {
    border: 1px solid var(--nh-line);
    border-radius: var(--nh-radius);
    background: #fff;
    overflow: hidden;
    transition: border-color .3s var(--nh-ease), box-shadow .3s var(--nh-ease);
}
.nh-faq__item.is-open {
    border-color: color-mix(in srgb, var(--nh-blue) 40%, transparent);
    box-shadow: var(--nh-shadow-sm);
}
.nh-faq__button {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
    padding: 1.15rem 1.35rem;
    border: 0;
    background: transparent;
    text-align: left;
    cursor: pointer;
    font-family: var(--nh-font-head);
    font-weight: 500;
    font-size: 1rem;
    text-transform: uppercase;
    letter-spacing: .1em;
    line-height: 1.5;
    color: var(--nh-ink);
    transition: color .25s var(--nh-ease);
}
.nh-faq__button:hover { color: var(--nh-blue); }
.nh-faq__icon {
    position: relative;
    flex-shrink: 0;
    width: 20px; height: 20px;
}
.nh-faq__icon::before,
.nh-faq__icon::after {
    content: "";
    position: absolute;
    left: 50%; top: 50%;
    background: currentColor;
    border-radius: 1px;
    transition: transform .3s var(--nh-ease), opacity .3s var(--nh-ease);
}
.nh-faq__icon::before { width: 14px; height: 2px; margin: -1px 0 0 -7px; }
.nh-faq__icon::after  { width: 2px; height: 14px; margin: -7px 0 0 -1px; }
.nh-faq__item.is-open .nh-faq__icon::after { transform: rotate(90deg); opacity: 0; }
.nh-faq__panel {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows .35s var(--nh-ease);
}
.nh-faq__item.is-open .nh-faq__panel { grid-template-rows: 1fr; }
.nh-faq__panel > div { overflow: hidden; }
.nh-faq__content { padding: 0 1.35rem 1.35rem; font-size: 1rem; line-height: 1.85; }
.nh-faq__content > *:last-child { margin-bottom: 0; }

/* --- Zahlen & Fakten --------------------------------------------------- */
.nh-stat { text-align: center; }
.nh-stat__value {
    display: block;
    font-family: var(--nh-font-body);
    font-weight: 700;
    font-size: clamp(2.5rem, 1.6rem + 3.6vw, 4rem);
    line-height: 1;
    color: var(--nh-blue);
    margin-bottom: .35rem;
    font-variant-numeric: tabular-nums;
}
.nh-stat__label {
    font-family: var(--nh-font-head);
    font-size: .875rem;
    text-transform: uppercase;
    letter-spacing: .14em;
    color: var(--nh-muted);
}
.nh-stat__body { margin-top: .8rem; font-size: 1rem; }
.nh-section--dark .nh-stat__value { color: var(--nh-copper-light); }
.nh-section--dark .nh-stat__label { color: rgba(255,255,255,.65); }

/* --- Logo-Wand --------------------------------------------------------- */
.nh-logowall { align-items: center; }
.nh-logowall__item {
    display: grid;
    place-items: center;
    padding: 1.6rem 1.2rem;
    background: #fff;
    border: 1px solid var(--nh-line);
    border-radius: var(--nh-radius);
    min-height: 130px;
    transition: transform .35s var(--nh-ease), box-shadow .35s var(--nh-ease);
}
.nh-logowall__item:hover { transform: translateY(-4px); box-shadow: var(--nh-shadow-sm); }
.nh-logowall__item img {
    max-height: 78px;
    width: auto;
    object-fit: contain;
    filter: grayscale(1);
    opacity: .72;
    transition: filter .4s var(--nh-ease), opacity .4s var(--nh-ease);
}
.nh-logowall__item:hover img { filter: none; opacity: 1; }

/* --- Partnervorstellung ------------------------------------------------ */
.nh-partner {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: clamp(1.75rem, 1rem + 3.5vw, 4rem);
    align-items: center;
    padding-block: clamp(2rem, 1.2rem + 3vw, 3.5rem);
}
.nh-partner + .nh-partner { border-top: 1px solid var(--nh-line); }
.nh-partner:nth-child(even) .nh-partner__media { order: 2; }
.nh-partner__media {
    display: grid;
    place-items: center;
    min-height: 200px;
    padding: 1.5rem;
    background: var(--nh-bg-soft);
    border-radius: var(--nh-radius);
}
.nh-partner__media img { max-height: 190px; width: auto; object-fit: contain; }
.nh-partner__media--empty {
    font-family: var(--nh-font-head);
    font-size: clamp(1.4rem, 1rem + 1.6vw, 2rem);
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--nh-blue);
    text-align: center;
    line-height: 1.3;
}
.nh-partner__title {
    font-family: var(--nh-font-body);
    font-weight: 700;
    font-size: clamp(1.5rem, 1.15rem + 1.6vw, 2.25rem);
    margin: 0 0 .6em;
}
.nh-partner__body > *:last-child { margin-bottom: 0; }
@media (max-width: 860px) {
    .nh-partner { grid-template-columns: minmax(0, 1fr); }
    .nh-partner:nth-child(even) .nh-partner__media { order: 0; }
}

/* --- Downloads --------------------------------------------------------- */
.nh-download {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: clamp(1.5rem, 1rem + 1.6vw, 2.25rem);
    background: #fff;
    border: 1px solid var(--nh-line);
    border-radius: var(--nh-radius);
    box-shadow: var(--nh-shadow-sm);
    transition: transform .35s var(--nh-ease), box-shadow .35s var(--nh-ease);
}
.nh-download:hover { transform: translateY(-5px); box-shadow: var(--nh-shadow); }
.nh-download__icon {
    width: 52px; height: 52px;
    margin-bottom: 1.2rem;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: var(--nh-blue-soft);
    color: var(--nh-blue);
}
.nh-download__icon svg { width: 26px; height: 26px; }
.nh-download__title {
    font-family: var(--nh-font-head);
    font-weight: 500;
    font-size: var(--nh-fs-h3);
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    margin: 0 0 .5em;
}
.nh-download__meta {
    font-family: var(--nh-font-head);
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--nh-muted);
    margin-bottom: .9rem;
}
.nh-download__body { font-size: 1rem; line-height: 1.8; }
.nh-download__foot { margin-top: auto; padding-top: 1.4rem; }

/* --- Kontaktboxen ------------------------------------------------------ */
.nh-contactbox {
    padding: clamp(1.5rem, 1rem + 1.6vw, 2.25rem);
    background: #fff;
    border: 1px solid var(--nh-line);
    border-radius: var(--nh-radius);
    height: 100%;
    text-align: center;
    transition: transform .35s var(--nh-ease), box-shadow .35s var(--nh-ease);
}
.nh-contactbox:hover { transform: translateY(-4px); box-shadow: var(--nh-shadow); }
.nh-contactbox__icon {
    width: 56px; height: 56px;
    margin: 0 auto 1.2rem;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--nh-blue-soft);
    color: var(--nh-blue);
}
.nh-contactbox__icon svg { width: 26px; height: 26px; }
.nh-contactbox__icon img { width: 34px; height: 34px; object-fit: contain; }
.nh-contactbox__title {
    font-family: var(--nh-font-head);
    font-size: var(--nh-fs-h3);
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    margin: 0 0 .6em;
}
.nh-contactbox__body { font-size: 1rem; line-height: 1.85; }
.nh-contactbox__body > *:last-child { margin-bottom: 0; }
.nh-contactbox__body a { font-weight: 600; }

/* --- Call to Action ---------------------------------------------------- */
.nh-cta {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    overflow-x: clip;
    color: #fff;
    background: var(--nh-bg-dark);
    padding-block: clamp(3.5rem, 2rem + 6vw, 6rem);
}
.nh-cta__media { position: absolute; inset: 0; z-index: -2; }
.nh-cta__media img {
    width: 100%; height: 100%;
    object-fit: var(--nh-fit, cover);
    object-position: var(--nh-focus, 50% 50%);
}
.nh-cta__overlay {
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(68deg, rgba(35,34,32,.94) 0%, rgba(35,34,32,.55) 100%);
}
.nh-cta__inner { max-width: 720px; }
.nh-cta--center .nh-cta__inner { margin-inline: auto; text-align: center; }
.nh-cta__title {
    font-family: var(--nh-font-body);
    font-weight: 700;
    font-size: var(--nh-fs-h2);
    line-height: 1.2;
    color: #fff;
    margin: 0 0 .6em;
}
.nh-cta__body { color: rgba(255, 255, 255, .88); font-size: var(--nh-fs-lead); line-height: 1.8; }
.nh-cta__body > *:last-child { margin-bottom: 0; }
.nh-cta .nh-eyebrow { color: var(--nh-copper-light); }

/* --- Video ------------------------------------------------------------- */
.nh-video {
    position: relative;
    border-radius: var(--nh-radius);
    overflow: hidden;
    box-shadow: var(--nh-shadow);
    background: #000;
}
.nh-video video,
.nh-video iframe { width: 100%; aspect-ratio: 16 / 9; display: block; border: 0; }
.nh-video__consent {
    display: grid;
    place-items: center;
    gap: 1rem;
    aspect-ratio: 16 / 9;
    padding: 2rem;
    text-align: center;
    background: var(--nh-bg-soft);
    color: var(--nh-ink-soft);
}

/* --- Vollbreites Bild -------------------------------------------------- */
.nh-fullimage { position: relative; overflow: hidden; }
.nh-fullimage img {
    width: 100%;
    height: clamp(240px, 40vw, 560px);
    object-fit: var(--nh-fit, cover);
    object-position: var(--nh-focus, 50% 50%);
}
/* Ganzes Bild zeigen: Hoehe richtet sich nach dem Bild selbst. */
.nh-fullimage[style*="contain"] img { height: auto; max-height: clamp(320px, 60vw, 720px); }
.nh-fullimage--rounded { border-radius: var(--nh-radius); }

/* --- Slider ------------------------------------------------------------ */
.nh-slider { position: relative; border-radius: var(--nh-radius); overflow: hidden; box-shadow: var(--nh-shadow); }
.nh-slider__track {
    display: flex;
    scroll-snap-type: x mandatory;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.nh-slider__track::-webkit-scrollbar { display: none; }
.nh-slider__slide {
    position: relative;
    flex: 0 0 100%;
    scroll-snap-align: center;
}
.nh-slider__slide img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.nh-slider__caption {
    position: absolute;
    inset: auto 0 0 0;
    padding: 3rem 1.5rem 1.3rem;
    background: linear-gradient(to top, rgba(35,34,32,.85), transparent);
    color: #fff;
    font-family: var(--nh-font-head);
    text-transform: uppercase;
    letter-spacing: .1em;
    font-size: .9375rem;
}
.nh-slider__nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 46px; height: 46px;
    display: grid;
    place-items: center;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .85);
    color: var(--nh-ink);
    cursor: pointer;
    transition: background-color .25s var(--nh-ease), transform .25s var(--nh-ease);
}
.nh-slider__nav:hover { background: #fff; transform: translateY(-50%) scale(1.06); }
.nh-slider__nav--prev { left: 1rem; }
.nh-slider__nav--next { right: 1rem; }
.nh-slider__dots {
    position: absolute;
    left: 0; right: 0; bottom: 1rem;
    display: flex;
    justify-content: center;
    gap: .5rem;
}
.nh-slider__dot {
    width: 9px; height: 9px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .5);
    cursor: pointer;
    transition: background-color .25s var(--nh-ease), transform .25s var(--nh-ease);
}
.nh-slider__dot.is-active { background: #fff; transform: scale(1.35); }

/* --- Karte ------------------------------------------------------------- */
.nh-map {
    border-radius: var(--nh-radius);
    overflow: hidden;
    box-shadow: var(--nh-shadow-sm);
    background: var(--nh-bg-soft);
}
.nh-map iframe { width: 100%; height: clamp(280px, 40vw, 460px); border: 0; display: block; }
.nh-map__consent {
    display: grid;
    place-items: center;
    gap: 1rem;
    padding: clamp(2rem, 5vw, 3.5rem);
    text-align: center;
}

/* --- Trenner / Abstand ------------------------------------------------- */
.nh-spacer { height: clamp(2rem, 4vw, 4rem); }
.nh-rule { height: 1px; background: var(--nh-line); }

/* --------------------------------------------------------- 9. Formulare -- */

.nh-form { display: grid; gap: 1.15rem; }
.nh-form__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.15rem;
}
.nh-form__field--full { grid-column: 1 / -1; }
@media (max-width: 640px) {
    .nh-form__grid { grid-template-columns: minmax(0, 1fr); }
}

.nh-form__label {
    display: block;
    margin-bottom: .45rem;
    font-family: var(--nh-font-head);
    font-size: .8125rem;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--nh-ink-soft);
}
.nh-form__label .nh-required { color: var(--nh-copper); }

.nh-input,
.nh-textarea,
.nh-select {
    width: 100%;
    padding: .95rem 1.1rem;
    border: 1px solid var(--nh-line);
    border-radius: 10px;
    background: #fff;
    color: var(--nh-ink);
    font-family: var(--nh-font-body);
    font-size: 1rem;
    line-height: 1.5;
    transition: border-color .25s var(--nh-ease), box-shadow .25s var(--nh-ease);
}
.nh-input:focus,
.nh-textarea:focus,
.nh-select:focus {
    outline: none;
    border-color: var(--nh-blue);
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--nh-blue) 14%, transparent);
}
.nh-input::placeholder,
.nh-textarea::placeholder { color: rgba(35, 34, 32, .38); }
.nh-textarea { min-height: 170px; resize: vertical; }
.nh-select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='%23232220' d='M1.4 0 6 4.6 10.6 0 12 1.4 6 7.4 0 1.4z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1.1rem center;
    background-size: 12px;
    padding-right: 2.8rem;
}
.nh-input[aria-invalid="true"],
.nh-textarea[aria-invalid="true"] { border-color: #c0392b; }

.nh-check {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    font-size: .9375rem;
    line-height: 1.6;
    cursor: pointer;
}
.nh-check input {
    flex-shrink: 0;
    width: 20px; height: 20px;
    margin-top: .2rem;
    accent-color: var(--nh-blue);
    cursor: pointer;
}

.nh-form__error {
    display: block;
    margin-top: .4rem;
    font-size: .875rem;
    color: #c0392b;
}
.nh-form__hint { display: block; margin-top: .35rem; font-size: .875rem; color: var(--nh-muted); }

.nh-alert {
    padding: 1.1rem 1.35rem;
    border-radius: 12px;
    border-left: 4px solid;
    font-size: 1rem;
    line-height: 1.7;
}
.nh-alert--success { background: #eaf6ec; border-color: #2e7d32; color: #1e4620; }
.nh-alert--error   { background: #fdeceb; border-color: #c0392b; color: #7d241b; }
.nh-alert--info    { background: var(--nh-blue-soft); border-color: var(--nh-blue); color: #0a4f88; }
.nh-alert ul { margin: .5rem 0 0; padding-left: 1.2rem; }

/* Honeypot – fuer Menschen unsichtbar */
.nh-hp {
    position: absolute !important;
    left: -9999px;
    width: 1px; height: 1px;
    overflow: hidden;
}

.nh-form__panel {
    padding: clamp(1.6rem, 1rem + 2.4vw, 3rem);
    background: #fff;
    border: 1px solid var(--nh-line);
    border-radius: var(--nh-radius);
    box-shadow: var(--nh-shadow-sm);
}

/* ----------------------------------------------------------- 10. Footer -- */

.nh-footer {
    background: var(--nh-bg-dark);
    color: rgba(255, 255, 255, .72);
    font-size: 1rem;
    line-height: 1.85;
}
.nh-footer a { color: rgba(255, 255, 255, .82); text-decoration: none; }
.nh-footer a:hover { color: var(--nh-copper-light); }

.nh-footer__main {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr));
    gap: clamp(2rem, 1rem + 3.5vw, 3.5rem);
    padding-block: clamp(3rem, 2rem + 4vw, 4.5rem);
}
@media (max-width: 980px) { .nh-footer__main { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .nh-footer__main { grid-template-columns: minmax(0, 1fr); } }

.nh-footer__brand img { height: 84px; width: auto; margin-bottom: 1.2rem; }
.nh-footer__tagline { max-width: 38ch; }

.nh-footer__title {
    font-family: var(--nh-font-head);
    font-weight: 500;
    font-size: .9375rem;
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    color: #fff;
    margin: 0 0 1.2rem;
}
.nh-footer__list { list-style: none; margin: 0; padding: 0; }
.nh-footer__list li { margin-bottom: .55rem; }
.nh-footer__list a { position: relative; }
.nh-footer__list a::after {
    content: "";
    position: absolute;
    left: 0; bottom: -2px;
    width: 100%; height: 1px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .3s var(--nh-ease);
}
.nh-footer__list a:hover::after { transform: scaleX(1); }

.nh-footer__contact { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; }
.nh-footer__contact li { display: flex; gap: .75rem; align-items: flex-start; }
.nh-footer__contact svg { flex-shrink: 0; width: 18px; height: 18px; margin-top: .38rem; color: var(--nh-copper-light); }

.nh-social { display: flex; gap: .6rem; margin-top: 1.4rem; }
.nh-social a {
    display: grid;
    place-items: center;
    width: 42px; height: 42px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .09);
    color: #fff;
    transition: background-color .3s var(--nh-ease), transform .3s var(--nh-ease);
}
.nh-social a:hover { background: var(--nh-blue); transform: translateY(-3px); color: #fff; }
.nh-social svg { width: 19px; height: 19px; }

/* Auf Touchgeräten bekommen die Textlinks im Fuß mehr Platz zum Antippen. */
@media (max-width: 860px) {
    .nh-footer__list li { margin-bottom: 0; }
    .nh-footer__list a,
    .nh-footer__legal a,
    .nh-footer__contact a {
        display: inline-block;
        padding-block: .55rem;
    }
    .nh-footer__contact li { align-items: center; }
    .nh-footer__contact svg { margin-top: 0; }
}

.nh-footer__bottom {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding-block: 1.5rem;
    border-top: 1px solid rgba(255, 255, 255, .1);
    font-size: .875rem;
}
.nh-footer__legal { display: flex; flex-wrap: wrap; gap: 1.25rem; list-style: none; margin: 0; padding: 0; }

/* Nach-oben-Schaltflaeche */
.nh-totop {
    position: fixed;
    right: clamp(1rem, 2vw, 2rem);
    bottom: clamp(1rem, 2vw, 2rem);
    z-index: 90;
    display: grid;
    place-items: center;
    width: 48px; height: 48px;
    border: 0;
    border-radius: 50%;
    background: var(--nh-blue);
    color: #fff;
    cursor: pointer;
    opacity: 0;
    visibility: hidden;
    transform: translateY(12px);
    box-shadow: var(--nh-shadow);
    transition: opacity .3s var(--nh-ease), transform .3s var(--nh-ease),
                visibility .3s, background-color .3s var(--nh-ease);
}
.nh-totop.is-visible { opacity: 1; visibility: visible; transform: none; }
.nh-totop:hover { background: var(--nh-copper); }
.nh-totop svg { width: 20px; height: 20px; }

/* --------------------------------------------------- 11. Cookie-Hinweis -- */

.nh-consent-root[hidden] { display: none; }

/* Abdunklung hinter dem Einstellungsdialog. */
.nh-consent__backdrop {
    position: fixed;
    inset: 0;
    z-index: 148;
    background: rgba(28, 27, 25, .55);
    -webkit-backdrop-filter: blur(2px);
    backdrop-filter: blur(2px);
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s var(--nh-ease), visibility .3s;
}
.nh-consent-root.is-modal .nh-consent__backdrop { opacity: 1; visibility: visible; }

/* --- Banner ------------------------------------------------------------ */

.nh-consent {
    position: fixed;
    left: 50%;
    bottom: clamp(1rem, 2vw, 1.75rem);
    z-index: 150;
    width: min(680px, calc(100vw - 2 * var(--nh-gutter)));
    transform: translate(-50%, calc(100% + 3rem));
    padding: clamp(1.35rem, 1rem + 1.4vw, 1.9rem);
    background: #fff;
    border: 1px solid var(--nh-line);
    border-radius: var(--nh-radius);
    box-shadow: var(--nh-shadow-lg);
    transition: transform .45s var(--nh-ease), opacity .3s var(--nh-ease);
    opacity: 0;
    max-height: calc(100dvh - 2rem);
    overflow-y: auto;
}
.nh-consent.is-visible { transform: translate(-50%, 0); opacity: 1; }
.nh-consent-root.is-modal .nh-consent { display: none; }

.nh-consent__head {
    display: flex;
    align-items: center;
    gap: .9rem;
    margin-bottom: .85rem;
}
.nh-consent__logo {
    width: auto;
    height: 46px;
    max-width: 92px;
    object-fit: contain;
    flex: none;
}
.nh-consent__title {
    font-family: var(--nh-font-head);
    font-size: 1.0625rem;
    text-transform: uppercase;
    letter-spacing: .1em;
    line-height: 1.3;
    margin: 0;
    color: var(--nh-ink);
}
.nh-consent__site {
    margin: .15rem 0 0;
    font-size: .78125rem;
    color: var(--nh-muted);
    letter-spacing: .02em;
}
.nh-consent__text {
    font-size: .9375rem;
    line-height: 1.75;
    margin: 0 0 1.15rem;
    color: var(--nh-body);
}

.nh-consent__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .6rem;
}
/* Ablehnen und Akzeptieren sind bewusst gleich gross und gleich betont. */
.nh-consent__btn {
    padding: .78em 1.5em;
    font-size: .8125rem;
    flex: 1 1 auto;
    min-width: 11rem;
    justify-content: center;
    text-align: center;
}
.nh-consent__link {
    appearance: none;
    border: 0;
    background: none;
    padding: .5rem .25rem;
    font-family: var(--nh-font-head);
    font-size: .8125rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--nh-blue);
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}
.nh-consent__link:hover { color: var(--nh-blue-dark); }
.nh-consent__link--sm { text-transform: none; letter-spacing: 0; font-size: inherit; padding: 0; }

.nh-consent__legal {
    margin: 1rem 0 0;
    font-size: .8125rem;
    color: var(--nh-muted);
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    align-items: center;
}
.nh-consent__legal a { color: var(--nh-muted); text-decoration: underline; text-underline-offset: 2px; }
.nh-consent__legal a:hover { color: var(--nh-blue); }
.nh-consent__stamp { margin: .6rem 0 0; font-size: .75rem; color: var(--nh-muted); }

/* --- Einstellungsdialog ------------------------------------------------- */

.nh-consent-modal {
    position: fixed;
    inset: 0;
    z-index: 152;
    display: none;
    align-items: center;
    justify-content: center;
    padding: clamp(.75rem, 3vw, 2rem);
}
.nh-consent-root.is-modal .nh-consent-modal { display: flex; }

.nh-consent-modal__box {
    display: flex;
    flex-direction: column;
    width: min(680px, 100%);
    max-height: calc(100dvh - 2rem);
    background: #fff;
    border-radius: var(--nh-radius);
    box-shadow: var(--nh-shadow-lg);
    overflow: hidden;
    animation: nh-consent-in .35s var(--nh-ease) both;
}
@keyframes nh-consent-in {
    from { opacity: 0; transform: translateY(18px) scale(.985); }
    to   { opacity: 1; transform: none; }
}

.nh-consent-modal__head {
    display: flex;
    align-items: center;
    gap: .9rem;
    padding: clamp(1.1rem, 2.5vw, 1.5rem);
    border-bottom: 1px solid var(--nh-line);
}
.nh-consent-modal__head .nh-consent__title { flex: 1; }
.nh-consent-modal__close {
    appearance: none;
    flex: none;
    width: 44px; height: 44px;
    display: grid;
    place-items: center;
    border: 1px solid var(--nh-line);
    border-radius: 50%;
    background: #fff;
    color: var(--nh-ink);
    cursor: pointer;
    transition: background-color .2s var(--nh-ease), color .2s var(--nh-ease);
}
.nh-consent-modal__close svg { width: 20px; height: 20px; }
.nh-consent-modal__close:hover { background: var(--nh-blue); color: #fff; border-color: var(--nh-blue); }

.nh-consent-modal__body {
    padding: clamp(1.1rem, 2.5vw, 1.5rem);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}
.nh-consent-modal__foot {
    padding: clamp(1.1rem, 2.5vw, 1.5rem);
    border-top: 1px solid var(--nh-line);
    background: var(--nh-bg-soft);
}

/* --- Kategorien --------------------------------------------------------- */

.nh-consent-cats { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; }
.nh-consent-cat {
    border: 1px solid var(--nh-line);
    border-radius: 10px;
    padding: .95rem 1.05rem;
    background: #fff;
}
.nh-consent-cat__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    min-height: 30px;
}
.nh-consent-cat__title {
    font-family: var(--nh-font-head);
    font-size: .9375rem;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--nh-ink);
}
.nh-consent-cat__badge {
    flex: none;
    font-size: .6875rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--nh-muted);
    background: var(--nh-bg-soft);
    border-radius: var(--nh-radius-pill);
    padding: .3rem .7rem;
}
.nh-consent-cat__text {
    margin: .55rem 0 0;
    font-size: .875rem;
    line-height: 1.7;
    color: var(--nh-body);
}
.nh-consent-cat__details { margin-top: .5rem; font-size: .8125rem; color: var(--nh-muted); }
.nh-consent-cat__details summary {
    cursor: pointer;
    color: var(--nh-blue);
    padding: .35rem 0;
    list-style: none;
}
.nh-consent-cat__details summary::-webkit-details-marker { display: none; }
.nh-consent-cat__details summary::before { content: "\25B8  "; }
.nh-consent-cat__details[open] summary::before { content: "\25BE  "; }
.nh-consent-cat__details p { margin: .3rem 0 0; line-height: 1.65; }

/* Schalter */
.nh-consent-switch {
    display: inline-flex;
    align-items: center;
    gap: .7rem;
    cursor: pointer;
    min-height: 30px;
}
.nh-consent-switch input {
    position: absolute;
    width: 1px; height: 1px;
    opacity: 0;
    pointer-events: none;
}
.nh-consent-switch__track {
    flex: none;
    position: relative;
    width: 48px; height: 28px;
    border-radius: var(--nh-radius-pill);
    background: #c9c5be;
    transition: background-color .25s var(--nh-ease);
}
.nh-consent-switch__track::after {
    content: "";
    position: absolute;
    top: 3px; left: 3px;
    width: 22px; height: 22px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
    transition: transform .25s var(--nh-ease);
}
.nh-consent-switch input:checked + .nh-consent-switch__track { background: var(--nh-blue); }
.nh-consent-switch input:checked + .nh-consent-switch__track::after { transform: translateX(20px); }
.nh-consent-switch input:disabled + .nh-consent-switch__track { background: var(--nh-blue); opacity: .45; }
.nh-consent-switch input:focus-visible + .nh-consent-switch__track {
    outline: 3px solid var(--nh-blue);
    outline-offset: 3px;
}

/* Platzhalter fuer blockierte externe Inhalte */
.nh-embed-block {
    display: grid;
    place-items: center;
    gap: .9rem;
    padding: clamp(1.6rem, 4vw, 3rem);
    text-align: center;
    background: var(--nh-bg-soft);
    border: 1px dashed var(--nh-line);
    border-radius: var(--nh-radius);
}
.nh-embed-block__text { margin: 0; font-size: .9375rem; color: var(--nh-body); max-width: 46ch; }

@media (max-width: 560px) {
    .nh-consent {
        left: 0;
        right: 0;
        bottom: 0;
        width: 100%;
        max-width: none;
        border-radius: var(--nh-radius) var(--nh-radius) 0 0;
        transform: translate(0, 100%);
    }
    .nh-consent.is-visible { transform: translate(0, 0); }
    .nh-consent__btn { flex: 1 1 100%; min-width: 0; }
    .nh-consent__actions { gap: .5rem; }
    .nh-consent__link { width: 100%; text-align: center; }
    .nh-consent-modal { padding: 0; align-items: flex-end; }
    .nh-consent-modal__box {
        max-height: 92dvh;
        border-radius: var(--nh-radius) var(--nh-radius) 0 0;
    }
}

/* -------------------------------------------------------- 12. Animation -- */

/* Sicherheitsnetz: Sollte das Skript nicht ausgefuehrt werden (Blocker,
   Ladefehler), macht diese Animation den Inhalt nach kurzer Zeit trotzdem
   sichtbar. Bei funktionierendem Skript uebernimmt .is-visible sofort. */
@keyframes nh-reveal-fallback {
    to { opacity: 1; transform: none; }
}

[data-nh-reveal] {
    opacity: 0;
    transform: translateY(26px);
    animation: nh-reveal-fallback .5s ease 4s forwards;
}

/* Sobald das Skript die Beobachtung uebernommen hat, wird das Netz abgeschaltet. */
.nh-reveal-ready [data-nh-reveal] {
    animation: none;
    transition: opacity .7s var(--nh-ease), transform .7s var(--nh-ease);
    transition-delay: var(--nh-delay, 0ms);
    will-change: opacity, transform;
}
[data-nh-reveal].is-visible { opacity: 1; transform: none; animation: none; }
[data-nh-reveal="left"]  { transform: translateX(-32px); }
[data-nh-reveal="right"] { transform: translateX(32px); }
[data-nh-reveal="zoom"]  { transform: scale(.94); }
[data-nh-reveal].is-visible { transform: none; }

/* Auf schmalen Bildschirmen liegen die Spalten ohnehin untereinander –
   dort blenden die Blöcke nur noch von unten ein. */
@media (max-width: 860px) {
    [data-nh-reveal="left"],
    [data-nh-reveal="right"] { transform: translateY(26px); }
}

/* Bewegungsreduktion respektieren */
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
    [data-nh-reveal] { opacity: 1 !important; transform: none !important; }
    .nh-hero--zoom .nh-hero__media img,
    .nh-hero--zoom .nh-hero__media video { animation: none; }
}

/* --------------------------------------------------------- 13. Sonstiges -- */

.nh-breadcrumb {
    padding-block: 1rem;
    font-family: var(--nh-font-head);
    font-size: .8125rem;
    text-transform: uppercase;
    letter-spacing: .1em;
}
.nh-breadcrumb ol { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.nh-breadcrumb li:not(:last-child)::after { content: "/"; margin-left: .5rem; color: var(--nh-muted); }
.nh-breadcrumb a { color: var(--nh-muted); text-decoration: none; }
.nh-breadcrumb a:hover { color: var(--nh-blue); }
.nh-breadcrumb [aria-current] { color: var(--nh-ink); }

/* Aufrufzaehler: dezente Plakette am Seitenende, kein eigener Textblock. */
.nh-pageviews {
    padding-block: clamp(1rem, 2vw, 1.5rem);
    border-top: 1px solid var(--nh-line);
}
.nh-pageviews .nh-container {
    display: flex;
    justify-content: flex-end;
}
.nh-pageviews__chip {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    margin: 0;
    padding: .45rem .95rem;
    border-radius: var(--nh-radius-pill);
    background: var(--nh-bg-soft);
    color: var(--nh-ink-soft);
    font-family: var(--nh-font-head);
    font-size: .8125rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    white-space: nowrap;
}
.nh-pageviews__icon {
    width: 17px; height: 17px;
    flex: none;
    color: var(--nh-blue);
    opacity: .85;
}
.nh-pageviews__value {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--nh-ink);
    letter-spacing: .04em;
}
.nh-pageviews__label { color: var(--nh-muted); }

@media (max-width: 560px) {
    .nh-pageviews .nh-container { justify-content: center; }
}

/* Fehlerseiten */
.nh-error {
    display: grid;
    place-items: center;
    min-height: 62vh;
    padding-block: clamp(3rem, 8vw, 6rem);
    text-align: center;
}
.nh-error__code {
    font-family: var(--nh-font-body);
    font-weight: 700;
    font-size: clamp(4.5rem, 2rem + 12vw, 9rem);
    line-height: 1;
    color: var(--nh-blue);
    margin: 0 0 .2em;
}
.nh-error__title {
    font-family: var(--nh-font-head);
    font-size: clamp(1.1rem, .9rem + .9vw, 1.6rem);
    text-transform: uppercase;
    letter-spacing: var(--nh-track-wide);
    margin: 0 0 1rem;
}
.nh-error__text { max-width: 52ch; margin: 0 auto 2rem; }

/* Druckausgabe */
@media print {
    .nh-header, .nh-footer, .nh-totop, .nh-consent, .nh-mobile-nav, .nh-hero__scroll { display: none !important; }
    body { font-size: 11pt; color: #000; }
    .nh-hero { min-height: auto; color: #000; background: none; padding-block: 1rem; }
    .nh-hero__media, .nh-hero__overlay { display: none; }
    .nh-hero__title, .nh-hero__eyebrow { color: #000; text-shadow: none; }
    a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 9pt; }
}
