@font-face { font-family: "Lora"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/lora-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Lora"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/lora-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/source-sans-3-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/source-sans-3-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Newsreader"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/newsreader-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Newsreader"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/newsreader-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Nunito Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/nunito-sans-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Nunito Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/nunito-sans-latin-600-normal.woff2") format("woff2"); }

.nw-theme {
  --theme-ink: #382f3d;
  --theme-muted: #625a62;
  --theme-paper: #f6f2f3;
  --theme-heading-font: "Lora";
  --theme-body-font: "Source Sans 3";
  --theme-radius: 22px;
  --theme-surface-ink: var(--theme-ink);
  --nw-accent: #382f3d;
  --nw-accent-contrast: #ffffff;
  --nw-surface: #fffaf7;
  --nw-border: #cfc4cb;
  --nw-field-border: #857b84;
  --nw-focus: #765782;
  --nw-attention: #8a4a12;
  --nw-focus-width: 3px;
  --nw-focus-offset: 3px;
  --nw-border-width: 1px;
  --nw-radius-control: 12px;
  --nw-radius-card: var(--theme-radius);
  --nw-control-height: 2.75rem;
  --nw-field-width: 32rem;
  --nw-font-size: 1rem;
  --nw-font-size-small: .9rem;
  --nw-space-xs: .5rem;
  --nw-space-sm: .75rem;
  --nw-space-md: 1.25rem;
  --nw-space-lg: 1.8rem;
  --nw-space-xl: 2.5rem;
  margin: 0;
  background: var(--theme-paper);
  color: var(--theme-ink);
  font-family: var(--theme-body-font), sans-serif;
  font-size: 1.125rem;
  line-height: 1.6;
  color-scheme: light;
}
.nw-theme *, .nw-theme *::before, .nw-theme *::after { box-sizing: border-box; }
.nw-theme :where(a) { color: inherit; text-underline-offset: .2em; }
.nw-theme :where(button, input, select, textarea) { font: inherit; }
.nw-theme :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline: var(--nw-focus-width) solid var(--nw-focus); outline-offset: var(--nw-focus-offset); }
.nw-theme :where(h1, h2, h3) { font-family: var(--theme-heading-font), serif; font-weight: 400; line-height: 1.15; letter-spacing: -.025em; }
.nw-theme h1 { margin: 0 0 1.2rem; font-size: clamp(2.3rem, 4.6vw, 3.8rem); }
.nw-theme h2 { font-size: clamp(1.8rem, 3vw, 2.6rem); }
.nw-theme h3 { font-size: 1.35rem; }
.nw-theme p { max-width: 70ch; }
.nw-theme img { max-width: 100%; height: auto; }
.nw-theme figure { margin: 0; }
.nw-theme #wrapper { min-height: 100svh; display: flex; flex-direction: column; overflow-x: clip; }
.nw-theme #header, .nw-theme #footer { background: var(--nw-surface); color: var(--theme-surface-ink); }
.nw-theme #header { border-bottom: 1px solid var(--nw-border); }
.nw-theme #header .inside, .nw-theme #footer .inside, .nw-theme #main > .inside { width: min(100% - 3rem, 1180px); margin-inline: auto; }
.nw-theme #container { flex: 1; width: 100%; }
.nw-theme #main { float: none; width: 100%; }
.nw-theme #main > .inside { padding: 2.5rem 0 5rem; }
.nw-theme .mod_article { margin: 0; }
/* Header: three layouts from the design assistant. The menu sits exactly in the middle (1fr auto 1fr). */
.nw-announce { margin-inline: calc(50% - 50vw); padding: .55rem 1rem; background: var(--nw-accent); color: var(--nw-accent-contrast); font-size: .85rem; text-align: center; }
.nw-announce p { margin: 0 auto; max-width: none; }
.nw-header { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 1.5rem; min-height: 76px; padding-block: .5rem; }
.nw-brand { justify-self: start; display: inline-flex; align-items: baseline; gap: .55rem; min-width: 0; font-family: var(--theme-heading-font), serif; line-height: 1.1; text-decoration: none; }
.nw-brand b { font-size: 1.65rem; font-weight: 400; letter-spacing: -.02em; }
.nw-brand small { font-family: var(--theme-body-font), sans-serif; font-size: .8rem; opacity: .7; }
.nw-brand img { max-width: 180px; max-height: 56px; object-fit: contain; }
.nw-brand-seal { display: none; }
.nw-header > noscript { display: none; }
.nw-desktop-nav { justify-self: center; display: flex; align-items: center; gap: 1.75rem; }
.nw-desktop-nav a { position: relative; padding-block: .35rem; text-decoration: none; font-weight: 400; white-space: nowrap; }
.nw-desktop-nav a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; background: currentColor; transform: scaleX(0); transition: transform .2s ease; }
.nw-desktop-nav a:hover::after, .nw-desktop-nav a[aria-current]::after { transform: scaleX(1); }
.nw-header-actions { justify-self: end; display: flex; align-items: center; gap: .5rem; }
.nw-header--centered .nw-desktop-nav { grid-column: 1; grid-row: 1; justify-self: start; }
.nw-header--centered .nw-brand { grid-column: 2; grid-row: 1; justify-self: center; flex-direction: column; align-items: center; gap: .2rem; }
.nw-header--centered .nw-brand small { font-size: .65rem; letter-spacing: .18em; text-transform: uppercase; }
.nw-header--centered .nw-header-actions { grid-column: 3; grid-row: 1; }
.nw-theme #header:has(.nw-header--floating) { border-bottom: 0; background: transparent; padding-top: .9rem; }
.nw-header--floating { min-height: 64px; padding-inline: 1rem; border: 1px solid var(--nw-border); border-radius: 999px; background: var(--nw-surface); box-shadow: 0 6px 24px rgb(0 0 0 / .06); }
.nw-header--floating .nw-brand b { font-size: 1.4rem; }
/* Sheets of the theme (menu, gallery) close with the same round button as the cart. */
.nw-theme :is(.nw-navigation-sheet, .nw-gallery-lightbox) .ss-close { display: grid; place-items: center; width: 2.25rem; height: 2.25rem; padding: 0; border: 1px solid var(--nw-border); border-radius: 999px; background: transparent; color: inherit; font: inherit; font-size: 1.15rem; line-height: 1; cursor: pointer; }
.nw-theme :is(.nw-navigation-sheet, .nw-gallery-lightbox) .ss-close:hover { background: color-mix(in srgb, currentColor 8%, transparent); }
.nw-skip { position: absolute; top: -200px; left: 1rem; background: white; color: #382f3d; padding: 1rem; z-index: 100; }
.nw-skip:focus { top: 1rem; }
.nw-button, .nw-menu-toggle { display: inline-flex; align-items: center; justify-content: center; min-height: var(--nw-control-height); padding: .5rem 1.4rem; border: var(--nw-border-width) solid var(--nw-accent); border-radius: var(--nw-radius-button, 999px); background: var(--nw-accent); color: var(--nw-accent-contrast); font: inherit; font-size: var(--nw-font-size); font-weight: 600; line-height: 1.25; text-decoration: none; cursor: pointer; }
.nw-button:hover { filter: brightness(.94); }
.nw-menu-toggle { display: none; width: 2.75rem; min-height: 2.75rem; padding: 0; border: 0; border-radius: 999px; background: transparent; color: inherit; }
.nw-menu-toggle:hover { background: color-mix(in srgb, currentColor 8%, transparent); }
.nw-header-icon { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; }
/* Footer: brand and contact, then one column per link group. */
.nw-footer { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(2, minmax(0, 1fr)); gap: 2rem 3rem; padding: 3.5rem 0 2rem; }
.nw-footer h2 { font-size: 1.5rem; margin: 0 0 1rem; }
.nw-footer p { margin: .5rem 0; }
.nw-footer > div > p { color: var(--theme-muted); }
.nw-footer nav { display: flex; flex-direction: column; align-items: flex-start; gap: .55rem; }
.nw-theme .nw-footer__nav h3 { margin: 0 0 .4rem; font-family: var(--theme-body-font), sans-serif; font-size: .8rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--theme-muted); }
.nw-footer nav a { text-decoration: none; }
.nw-footer nav a:hover { text-decoration: underline; }
.nw-footer .nw-demo-note { grid-column: 1 / -1; max-width: none; padding-top: 1.5rem; border-top: 1px solid var(--nw-border); font-size: .85rem; color: var(--theme-muted); }
.nw-theme #footer { border-top: 1px solid var(--nw-border); }
.nw-placeholder { max-width: 680px; border-left: 4px solid var(--nw-focus); padding: .2rem 1.2rem; background: var(--nw-surface); color: var(--theme-surface-ink); }
@media (max-width: 767px) {
  /* Phone: menu button left, brand in the middle, cart or main action right. */
  .nw-desktop-nav { display: none; }
  .nw-header > noscript { display: block; grid-column: 1 / -1; }
  .nw-menu-toggle { display: inline-flex; }
  .nw-header, .nw-header--centered { grid-template-columns: 1fr auto 1fr; gap: .5rem; min-height: 64px; }
  .nw-header-actions { display: contents; }
  .nw-header-actions > .nw-menu-toggle { grid-column: 1; grid-row: 1; justify-self: start; }
  .nw-header-actions > :not(.nw-menu-toggle) { grid-column: 3; grid-row: 1; justify-self: end; }
  .nw-brand, .nw-header--centered .nw-brand { grid-column: 2; grid-row: 1; justify-self: center; flex-direction: column; align-items: center; gap: .15rem; text-align: center; }
  .nw-brand b { font-size: 1.4rem; }
  .nw-brand small { font-size: .7rem; }
  .nw-header--floating { padding-inline: .5rem; }
}
@media (max-width: 599px) {
  .nw-theme { font-size: 1.0625rem; --nw-space-lg: 1.25rem; }
  .nw-theme #header .inside, .nw-theme #footer .inside, .nw-theme #main > .inside { width: min(100% - 2rem, 1180px); }
  .nw-theme #main > .inside { padding-top: 1.5rem; }
  .nw-footer { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nw-footer > div:first-child { grid-column: 1 / -1; }
}
/*
 * Page sections shared by all Nordwerk themes: hero, promises, section head, picture and text,
 * quote cards, FAQ accordion and the closing callout. Themes set colors through the --theme-* tokens.
 */
.nw-theme {
  --theme-section-space: clamp(3.5rem, 8vw, 6rem);
  --theme-tile: color-mix(in srgb, var(--theme-ink) 7%, var(--theme-paper));
  --theme-callout: color-mix(in srgb, var(--nw-focus) 14%, var(--theme-paper));
  --theme-success: #2f6b4f;
  --theme-stars: #a24d16;
  /* Section bundle tokens (nordwerk/contao-sections-bundle) follow the theme. */
  --nw-muted: var(--theme-muted);
  --nw-tile: var(--theme-tile);
  --nw-callout: var(--theme-callout);
  --nw-success: var(--theme-success);
  --nw-page: var(--theme-paper);
  --nw-heading-font: var(--theme-heading-font), serif;
}
/* One even rhythm between the sections of a page; zero specificity, so a section can opt out. */
.nw-theme .mod_article > :where([class*="content-"], [class*="mod_"], section, ul.nw-usps, .nw-section-head) + :where([class*="content-"], [class*="mod_"], section, ul.nw-usps, .nw-section-head) { margin-top: var(--theme-section-space); }
.nw-theme .mod_article > :is(.content-nw-shop-usps, ul.nw-usps, .mod_breadcrumb + *, .nw-section-head + *) { margin-top: 0; }
.nw-theme .mod_article > :is([class*="content-"], [class*="mod_"]):not(.nw-section) > h2 { margin: 0 0 1.5rem; font-size: clamp(1.75rem, 3vw, 2.3rem); }
.nw-theme :is(.nw-section__head, .nw-contact, .nw-split__text) h2 { font-size: clamp(1.75rem, 3vw, 2.3rem); }
.nw-theme .nw-section.nw-callout > h2 { font-size: clamp(1.4rem, 2.4vw, 1.8rem); }

.nw-eyebrow { margin: 0 0 .9rem; font-size: .95rem; color: var(--theme-muted); }
.nw-hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); align-items: center; gap: clamp(1.5rem, 4vw, 3.5rem); padding-block: clamp(.5rem, 2vw, 1.5rem) clamp(1.5rem, 3vw, 2.5rem); }
.nw-hero__copy { min-width: 0; }
.nw-hero :is(h1, h2) { max-width: 11ch; margin: 0 0 1.2rem; font-size: clamp(2.6rem, 5.4vw, 4.4rem); line-height: 1.02; }
.nw-hero__copy p { max-width: 38ch; margin: 0 0 1.8rem; font-size: 1.15rem; color: var(--theme-muted); }
.nw-hero__copy .nw-eyebrow { margin-bottom: .9rem; font-size: .95rem; }
.nw-hero__actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.nw-hero__copy p.nw-hero__actions { max-width: none; }
.nw-button--secondary, .nw-button-secondary { background: transparent; color: inherit; border-color: color-mix(in srgb, currentColor 30%, transparent); }
.nw-button--secondary:hover, .nw-button-secondary:hover { background: color-mix(in srgb, currentColor 7%, transparent); filter: none; }
.nw-hero__image { aspect-ratio: 5 / 4; max-width: 100%; overflow: hidden; border-radius: 20px; background: var(--theme-tile); }
.nw-hero__image :is(picture, img) { display: block; width: 100%; height: 100%; }
.nw-hero__image img { object-fit: cover; }

.nw-usps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin: 0; padding: 1rem 0; list-style: none; border-block: 1px solid var(--nw-border); font-size: .95rem; color: var(--theme-muted); text-align: center; }
.nw-usps__item::before { content: "✓" / ""; margin-inline-end: .45rem; color: var(--theme-success); font-weight: 700; }

.nw-section-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: .5rem 1.5rem; margin-bottom: 1.5rem; }
.nw-theme .nw-section-head h2 { margin: 0; font-size: clamp(1.75rem, 3vw, 2.3rem); }
.nw-section-link { margin-inline-start: auto; font-size: .875rem; font-weight: 600; text-underline-offset: .25em; }
.nw-section-link::after { content: " →" / ""; }

/* Picture and text side by side: a Contao text element with image (class nw-split) or a plain section. */
.nw-theme .nw-split.media { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "image heading" "image text"; align-items: center; column-gap: clamp(1.5rem, 4vw, 3.5rem); row-gap: 0; }
.nw-theme .nw-split.media > h2 { grid-area: heading; align-self: end; margin-bottom: 1rem; }
.nw-theme .nw-split.media > figure { grid-area: image; }
.nw-theme .nw-split.media > .rte { grid-area: text; align-self: start; }
.nw-theme section.nw-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: clamp(1.5rem, 4vw, 3.5rem); }
.nw-theme section.nw-split--reverse > figure { order: 2; }
.nw-theme .nw-split > figure { margin: 0; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 20px; background: var(--theme-tile); }
.nw-theme .nw-split > figure img { display: block; width: 100%; height: 100%; object-fit: cover; }
.nw-theme .nw-split :is(.rte, .nw-split__text) { color: var(--theme-muted); }
.nw-theme .nw-split :is(.rte, .nw-split__text) h2 { color: var(--theme-ink); margin: 0 0 1rem; }
.nw-theme .nw-split :is(.rte, .nw-split__text) a { color: var(--theme-ink); font-weight: 600; }

/* Quote cards: the teaser element's testimonials and plain quotes look the same. */
.nw-quotes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: 1rem; margin: 0; padding: 0; list-style: none; }
.nw-theme .nw-teasers { gap: 1rem; }
.nw-theme :is(.nw-teaser-card, .nw-quote) { display: flex; flex-direction: column; gap: .75rem; height: 100%; margin: 0; padding: 1.5rem; border: 1px solid var(--nw-border); border-radius: var(--nw-radius-card); background: var(--nw-surface); color: var(--theme-surface-ink); }
.nw-theme .nw-teaser-card > *, .nw-quote blockquote, .nw-quote p { margin: 0; }
.nw-theme .nw-teaser-stars { order: -2; color: var(--theme-stars); letter-spacing: .12em; font-size: .95rem; }
.nw-theme :is(.nw-teaser-text, .nw-quote blockquote) { order: -1; font-family: var(--theme-heading-font), serif; font-size: 1.2rem; line-height: 1.45; }
.nw-theme .nw-teaser-text::before { content: "„"; }
.nw-theme .nw-teaser-text::after { content: "“"; }
.nw-theme .nw-teaser-card h3 { margin-top: auto; padding-top: .25rem; font-family: var(--theme-body-font), sans-serif; font-size: 1rem; font-weight: 600; letter-spacing: 0; }
.nw-quote figcaption { display: grid; margin-top: auto; padding-top: .25rem; font-weight: 600; font-size: 1rem; }
.nw-theme :is(.nw-teaser-card .nw-teaser-meta, .nw-quote figcaption small) { margin-top: -.6rem; font-size: .875rem; font-weight: 400; color: var(--theme-muted); }
.nw-quote figcaption small { margin-top: 0; }
/* Quotes speak for themselves; a date only adds noise on a start page. */
.nw-theme .nw-teaser-card time { display: none; }
.nw-theme .nw-teasers-note, .nw-quotes-note { margin: 1rem 0 0; font-size: .875rem; color: var(--theme-muted); }

/* FAQ accordion (template mod_faqpage_nw or plain details). */
.nw-faq { max-width: 52rem; }
.nw-faq > h2 { margin: 0 0 1.25rem; font-size: clamp(1.75rem, 3vw, 2.3rem); }
.nw-faq__item { border-bottom: 1px solid var(--nw-border); }
.nw-faq > h2 + .nw-faq__item, .nw-faq__item:first-child { border-top: 1px solid var(--nw-border); }
.nw-faq__item > summary { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1.1rem 0; font-weight: 600; cursor: pointer; list-style: none; }
.nw-faq__item > summary::-webkit-details-marker { display: none; }
.nw-faq__item > summary::after { content: ""; flex: none; width: .5rem; height: .5rem; border-right: 1.6px solid currentColor; border-bottom: 1.6px solid currentColor; transform: translateY(-3px) rotate(45deg); transition: transform .2s; }
.nw-faq__item[open] > summary::after { transform: translateY(2px) rotate(-135deg); }
.nw-faq__answer { padding-bottom: 1.1rem; color: var(--theme-muted); }
.nw-faq__answer > :first-child { margin-top: 0; }
.nw-faq__answer > :last-child { margin-bottom: 0; }
.nw-theme .mod_faqpage :is(.info, .toplink) { display: none; }

/* Closing callout: one tinted tile with a button. */
.nw-theme .nw-callout { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 1rem 2rem; padding: clamp(1.5rem, 3vw, 2.25rem); border-radius: 18px; background: var(--theme-callout); color: var(--theme-ink); }
.nw-theme .nw-callout > h2 { grid-column: 1; margin: 0; font-size: clamp(1.4rem, 2.4vw, 1.8rem); }
.nw-theme .nw-callout > .rte { display: contents; }
.nw-theme .nw-callout .rte p:first-child { grid-column: 1; margin: 0; color: var(--theme-muted); }
.nw-theme .nw-callout .rte p:last-child { grid-column: 2; grid-row: 1 / span 2; margin: 0; }
.nw-theme .nw-callout .rte p:last-child a { display: inline-flex; align-items: center; min-height: var(--nw-control-height); padding: .5rem 1.4rem; border-radius: 999px; background: var(--nw-accent); color: var(--nw-accent-contrast); font-weight: 600; text-decoration: none; }

@media (max-width: 760px) {
  .nw-hero, .nw-theme .nw-split.media, .nw-theme section.nw-split { grid-template-columns: 1fr; grid-template-areas: "image" "heading" "text"; }
  .nw-hero__image, .nw-theme section.nw-split > figure { order: -1; }
  .nw-hero :is(h1, h2) { font-size: clamp(2.4rem, 10vw, 3.4rem); }
  .nw-theme .nw-split.media > h2 { margin-top: 1.25rem; }
  .nw-usps { grid-template-columns: 1fr; text-align: start; }
  .nw-theme .nw-callout { grid-template-columns: 1fr; }
  .nw-theme .nw-callout .rte p:last-child { grid-column: 1; grid-row: auto; }
}
@media (prefers-reduced-motion: reduce) {
  .nw-theme *, .nw-theme *::before, .nw-theme *::after { scroll-behavior: auto !important; }
}

/*
 * Contao core elements in the theme style: text, text with picture, list, table, code, picture,
 * gallery, video, accordion, hyperlink as button and downloads. Slider and lightbox gallery come from
 * the Nordwerk carousel and gallery bundles.
 */
.nw-theme .rte > :first-child { margin-top: 0; }
.nw-theme .rte > :last-child { margin-bottom: 0; }
.nw-theme .rte a { font-weight: 600; text-decoration-thickness: 1px; }
.nw-theme .rte a:hover { text-decoration-thickness: 2px; }
.nw-theme :is(.rte, .content-list) :is(ul, ol) { display: grid; gap: .35rem; padding-inline-start: 1.25rem; }
.nw-theme :is(.rte, .content-list) ul > li::marker { content: "–  "; color: var(--nw-focus); }
.nw-theme :is(.rte, .content-list) ol > li::marker { font-family: var(--theme-heading-font), serif; color: var(--nw-focus); }
.nw-theme .rte blockquote { margin: 1.5em 0; padding: 0; }
.nw-theme .rte blockquote p { max-width: 32ch; font-family: var(--theme-heading-font), serif; font-size: clamp(1.4rem, 2.6vw, 1.9rem); line-height: 1.3; letter-spacing: -.015em; text-wrap: balance; }
.nw-theme .rte blockquote p:first-child::before { content: "„"; color: var(--nw-focus); }
.nw-theme .rte blockquote p:last-of-type::after { content: "“"; color: var(--nw-focus); }
.nw-theme .rte blockquote :is(cite, footer, small) { display: block; margin-top: .75rem; font-family: var(--theme-body-font), sans-serif; font-size: .95rem; font-style: normal; color: var(--theme-muted); }
.nw-theme .rte :is(h2, h3, h4) { margin: 1.6em 0 .5em; }
.nw-theme h4 { font-family: var(--theme-body-font), sans-serif; font-size: 1.05rem; font-weight: 600; letter-spacing: .01em; }

/* Text-like core elements in a row keep a reading rhythm; sections keep the larger section space. */
.nw-theme .mod_article > :is(.content-headline, .content-text, .content-list, .content-table, .content-code, .content-hyperlink, .content-download, .content-downloads, .content-image, .content-accordion, .content-youtube, .content-vimeo):not(.nw-split, .nw-callout) + :is(.content-text, .content-list, .content-table, .content-code, .content-hyperlink, .content-download, .content-downloads, .content-image, .content-accordion, .content-youtube, .content-vimeo):not(.nw-split, .nw-callout) { margin-top: var(--nw-space-xl); }
.nw-theme .mod_article > .content-headline + :is([class*="content-"], [class*="mod_"]) { margin-top: var(--nw-space-md); }
.nw-theme .mod_article > :is(.content-hyperlink, .content-download) + :is(.content-hyperlink, .content-download) { margin-top: var(--nw-space-sm); }
.nw-theme .content-headline > :is(h1, h2, h3) { margin: 0; }
.nw-theme .content-text.media:is(.media--left, .media--right)::after { content: ""; display: table; clear: both; }
.nw-theme .content-text.media:is(.media--left, .media--right):not(.nw-split) > figure { width: min(42%, 21rem); margin-bottom: 1rem; }
.nw-theme .content-text.media--left:not(.nw-split) > figure { float: left; margin-inline-end: 1.75rem; }
.nw-theme .content-text.media--right:not(.nw-split) > figure { float: right; margin-inline-start: 1.75rem; }
.nw-theme :is(.content-text, .content-image) figure img { display: block; width: 100%; border-radius: var(--nw-radius-card); background: var(--theme-tile); }
.nw-theme .mod_article figcaption { margin-top: .55rem; font-size: var(--nw-font-size-small); line-height: 1.45; color: var(--theme-muted); }

.nw-theme .content-table { overflow-x: auto; }
.nw-theme .content-table table { width: 100%; border-collapse: collapse; font-size: 1rem; font-variant-numeric: tabular-nums; }
.nw-theme .content-table caption { caption-side: top; margin-bottom: .75rem; text-align: start; font-family: var(--theme-heading-font), serif; font-size: 1.35rem; }
.nw-theme .content-table th { padding: 0 1rem .6rem 0; border-bottom: 1.5px solid currentColor; text-align: start; font-size: .8rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--theme-muted); }
.nw-theme .content-table td { padding: .75rem 1rem .75rem 0; border-bottom: 1px solid var(--nw-border); vertical-align: top; }
.nw-theme .content-table tbody th { border-bottom: 1px solid var(--nw-border); font-size: inherit; letter-spacing: 0; text-transform: none; color: inherit; }
.nw-theme .content-table :is(th, td):last-child { padding-inline-end: 0; }

.nw-theme .content-code code { padding: 0; background: none; }
.nw-theme .content-code pre { margin: 0; padding: 1rem 1.25rem; overflow-x: auto; border: 1px solid var(--nw-border); border-radius: var(--nw-radius-control); background: var(--nw-surface); color: var(--theme-surface-ink); font: .9rem/1.65 ui-monospace, "SF Mono", Menlo, Consolas, monospace; }

.nw-theme .content-gallery > ul { display: grid; grid-template-columns: repeat(var(--nw-gallery-cols, 3), minmax(0, 1fr)); gap: .75rem; margin: 0; padding: 0; list-style: none; }
.nw-theme .content-gallery--cols-1 { --nw-gallery-cols: 1; }
.nw-theme .content-gallery--cols-2 { --nw-gallery-cols: 2; }
.nw-theme .content-gallery--cols-3 { --nw-gallery-cols: 3; }
.nw-theme .content-gallery--cols-4 { --nw-gallery-cols: 4; }
.nw-theme .content-gallery--cols-5 { --nw-gallery-cols: 5; }
.nw-theme .content-gallery--cols-6 { --nw-gallery-cols: 6; }
.nw-theme .content-gallery--cols-7 { --nw-gallery-cols: 7; }
.nw-theme .content-gallery--cols-8 { --nw-gallery-cols: 8; }
.nw-theme .content-gallery--cols-9 { --nw-gallery-cols: 9; }
.nw-theme .content-gallery--cols-10 { --nw-gallery-cols: 10; }
.nw-theme .content-gallery--cols-11 { --nw-gallery-cols: 11; }
.nw-theme .content-gallery--cols-12 { --nw-gallery-cols: 12; }
.nw-theme .content-gallery figure { overflow: hidden; border-radius: calc(var(--nw-radius-card) * .7); background: var(--theme-tile); }
.nw-theme .content-gallery img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; transition: transform .45s ease; }
.nw-theme .content-gallery a:hover img { transform: scale(1.03); }

.nw-theme :is(.content-youtube, .content-vimeo, .content-player) { max-width: 52rem; }
.nw-theme :is(.content-youtube, .content-vimeo) figure > :is(iframe, button) { position: relative; display: grid; place-items: center; width: 100%; height: auto; aspect-ratio: 16 / 9; padding: 0; overflow: hidden; border: 0; border-radius: var(--nw-radius-card); background: var(--theme-tile); }
.nw-theme :is(.content-youtube, .content-vimeo) figure > button { color: #fff; cursor: pointer; }
/* Contao's .aspect classes use the zero-height padding trick; the frame itself carries the ratio here. */
.nw-theme :is(.content-youtube, .content-vimeo) figure.aspect { height: auto; padding: 0; aspect-ratio: auto; }
.nw-theme :is(.content-youtube, .content-vimeo) figure > button :is(picture, img) { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.nw-theme :is(.content-youtube, .content-vimeo) figure > button > span { position: relative; max-width: 24rem; margin: 1rem; padding: .75rem 1rem .75rem 3.75rem; border-radius: var(--nw-radius-control); background: rgb(0 0 0 / .62); font-size: .875rem; line-height: 1.4; text-align: start; }
.nw-theme :is(.content-youtube, .content-vimeo) figure > button > span::before { content: ""; position: absolute; left: .9rem; top: 50%; width: 2.25rem; height: 2.25rem; translate: 0 -50%; border-radius: 999px; background: var(--nw-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 5v14l11-7z' fill='white'/%3E%3C/svg%3E") center / 1.1rem no-repeat; }

.nw-theme .content-accordion .handorgel { border: 0; }
.nw-theme .content-accordion .handorgel__header { margin: 0; border-top: 1px solid var(--nw-border); font: inherit; }
.nw-theme .content-accordion .handorgel__header:first-of-type { border-top-color: var(--nw-border); }
.nw-theme .content-accordion .handorgel__header__button { display: flex; justify-content: space-between; align-items: center; gap: 1rem; width: 100%; padding: 1.1rem 0; border: 0; background: none; color: inherit; font: inherit; font-weight: 600; text-align: start; cursor: pointer; }
.nw-theme .content-accordion .handorgel__header__button::after { content: ""; flex: none; width: .5rem; height: .5rem; border-right: 1.6px solid currentColor; border-bottom: 1.6px solid currentColor; transform: translateY(-3px) rotate(45deg); transition: transform .2s; }
.nw-theme .content-accordion .handorgel__header--open .handorgel__header__button::after { transform: translateY(2px) rotate(-135deg); }
.nw-theme .content-accordion .handorgel__content { border-top: 0; background: none; color: var(--theme-muted); }
.nw-theme .content-accordion .handorgel__content__inner { padding: 0 0 1.1rem; }
.nw-theme .content-accordion > :last-child, .nw-theme .content-accordion .handorgel > :last-child { border-bottom: 1px solid var(--nw-border); }

.nw-theme .content-hyperlink .nw-textlink, .nw-theme .nw-textlink { font-weight: 600; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .25em; }
.nw-theme .nw-textlink::after { content: " →" / ""; }

.nw-theme :is(.content-downloads, .content-download) ul { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--nw-border); }
.nw-theme :is(.content-downloads, .content-download) li { border-bottom: 1px solid var(--nw-border); }
.nw-theme .content-download > a { border-block: 1px solid var(--nw-border); }
.nw-theme :is(.content-downloads li, .content-download) > a { display: grid; grid-template-columns: 2.75rem minmax(0, 1fr); align-items: center; gap: 1rem; padding: .8rem .25rem; text-decoration: none; }
.nw-theme :is(.content-downloads li, .content-download) > a:hover { background: color-mix(in srgb, var(--theme-ink) 4%, transparent); }
.nw-file-type { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: var(--nw-radius-control); background: var(--theme-tile); font-size: .7rem; font-weight: 600; letter-spacing: .06em; }
.nw-file-name { font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.nw-file-name small { display: block; font-size: .875rem; font-weight: 400; color: var(--theme-muted); }

@media (max-width: 760px) {
  .nw-theme .content-text.media:is(.media--left, .media--right):not(.nw-split) > figure { float: none; width: 100%; margin: 0 0 1rem; }
  .nw-theme .content-gallery:not(.content-gallery--cols-1) > ul { --nw-gallery-cols: 2; }
}
@media (prefers-reduced-motion: reduce) {
  .nw-theme .content-gallery img { transition: none; }
}

.nw-visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
