body,form,figure{margin:0;padding:0}img{border:0}header,footer,nav,section,aside,article,figure,figcaption{display:block}body{font-size:100.01%}select,input,textarea{font-size:99%}#container,.inside{position:relative}#main,#left,#right{float:left;position:relative}#main{width:100%}#left{margin-left:-100%}#right{margin-right:-100%}#footer{clear:both}#main .inside{min-height:1px}.ce_gallery>ul,.content-gallery>ul{margin:0;padding:0;overflow:hidden;list-style:none}.ce_gallery>ul li,.content-gallery>ul li{float:left}.ce_gallery>ul li.col_first,.content-gallery>ul li.col_first{clear:left}.float_left,.media--left>figure{float:left}.float_right,.media--right>figure{float:right}.block{overflow:hidden}.media{display:flow-root}.clear,#clear{height:.1px;font-size:.1px;line-height:.1px;clear:both}.invisible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.custom{display:block}#container:after,.custom:after{content:"";display:table;clear:both}
@media (max-width:767px){#wrapper{margin:0;width:auto}#container{padding-left:0;padding-right:0}#main,#left,#right{float:none;width:auto}#left{right:0;margin-left:0}#right{margin-right:0}}img{max-width:100%;height:auto}.audio_container audio{max-width:100%}.video_container video{max-width:100%;height:auto}.aspect,.responsive{position:relative;height:0}.aspect iframe,.responsive iframe{position:absolute;top:0;left:0;width:100%;height:100%}.aspect--16\:9,.responsive.ratio-169{padding-bottom:56.25%}.aspect--16\:10,.responsive.ratio-1610{padding-bottom:62.5%}.aspect--21\:9,.responsive.ratio-219{padding-bottom:42.8571%}.aspect--4\:3,.responsive.ratio-43{padding-bottom:75%}.aspect--3\:2,.responsive.ratio-32{padding-bottom:66.6666%}.aspect--9\:16,.responsive.ratio-916{padding-bottom:177.7777%}.aspect--1\:1,.responsive.ratio-11{padding-bottom:100%}
@font-face { font-family: "Lora"; font-style: normal; font-weight: 400; font-display: swap; src: url("../../bundles/themebase/fonts/lora-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Lora"; font-style: normal; font-weight: 600; font-display: swap; src: url("../../bundles/themebase/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("../../bundles/themebase/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("../../bundles/themebase/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("../../bundles/themebase/fonts/newsreader-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Newsreader"; font-style: normal; font-weight: 600; font-display: swap; src: url("../../bundles/themebase/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("../../bundles/themebase/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("../../bundles/themebase/fonts/nunito-sans-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Fraunces"; font-style: normal; font-weight: 400; font-display: swap; src: url("../../bundles/themebase/fonts/fraunces-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Fraunces"; font-style: normal; font-weight: 600; font-display: swap; src: url("../../bundles/themebase/fonts/fraunces-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; }
/* The menus are core navigation modules: nested lists, level_1 is the bar. */
.nw-desktop-nav ul, .nw-mobile-nav ul, .nw-nojs-nav ul, .nw-footer nav ul { list-style: none; margin: 0; padding: 0; }
.nw-desktop-nav li, .nw-mobile-nav li, .nw-nojs-nav li, .nw-footer nav li { margin: 0; }
.nw-desktop-nav { justify-self: center; }
.nw-desktop-nav > ul { display: flex; align-items: center; gap: 1.75rem; }
.nw-desktop-nav li { position: relative; }
.nw-desktop-nav ul ul { position: absolute; z-index: 20; top: 100%; left: -1rem; display: none; min-width: 12rem; padding: .6rem 1rem; border: 1px solid var(--nw-border); border-radius: .5rem; background: var(--nw-surface); }
.nw-desktop-nav li:hover > ul, .nw-desktop-nav li:focus-within > ul { display: grid; gap: .15rem; }
.nw-desktop-nav ul ul ul { top: -.6rem; left: 100%; }
.nw-mobile-nav ul { display: grid; gap: .5rem; }
.nw-mobile-nav ul ul { padding-left: 1rem; font-size: .8em; }
.nw-nojs-nav > ul { display: flex; flex-wrap: wrap; gap: .25rem 1rem; }
.nw-nojs-nav ul ul { display: none; }
.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, .nw-desktop-nav a.trail::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, .nw-footer nav ul { 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; }

/* Footer free text from the module settings. */
.nw-theme .nw-footer__text { margin-top: .75rem; color: var(--theme-muted); }
.nw-theme .nw-footer__text > :first-child { margin-top: 0; }
.nw-theme .nw-footer__text > :last-child { margin-bottom: 0; }

/* Style variants: pick them in the Style Manager (oveleon/contao-component-style-manager,
   config in contao/templates/style-manager-nordwerk-theme.yaml) or type the class into the
   CSS class field. An article becomes a band over the full width, an element a box. */
.nw-theme :is(.nw-tone-1, .nw-tone-2, .nw-tone-dark) { --_tone: var(--theme-tile); background: var(--_tone); }
.nw-theme .nw-tone-2 { --_tone: var(--theme-callout); }
.nw-theme .nw-tone-dark { --_tone: var(--theme-ink); --theme-muted: color-mix(in srgb, var(--theme-paper) 74%, var(--theme-ink)); color: var(--theme-paper); }
.nw-theme .nw-tone-dark .nw-button:not(.nw-button--secondary, .nw-button-secondary) { border-color: var(--theme-paper); background: var(--theme-paper); color: var(--theme-ink); }
.nw-theme .nw-tone-dark :focus-visible { outline-color: currentColor; }
.nw-theme .mod_article:is(.nw-tone-1, .nw-tone-2, .nw-tone-dark) { padding-block: var(--theme-section-space); box-shadow: 0 0 0 100vmax var(--_tone); clip-path: inset(0 -100vmax); }
.nw-theme .mod_article + .mod_article:is(.nw-tone-1, .nw-tone-2, .nw-tone-dark),
.nw-theme .mod_article:is(.nw-tone-1, .nw-tone-2, .nw-tone-dark) + .mod_article { margin-top: var(--theme-section-space); }
.nw-theme .mod_article > :is(.nw-tone-1, .nw-tone-2, .nw-tone-dark) { padding: clamp(1.5rem, 4vw, 2.5rem); border-radius: var(--theme-radius); }
.nw-theme .nw-space-compact { --theme-section-space: clamp(1.5rem, 4vw, 2.5rem); }
.nw-theme .nw-space-wide { --theme-section-space: clamp(5rem, 11vw, 8.5rem); }
.nw-theme .nw-narrow { max-width: 44rem; margin-inline: auto; }
.nw-theme .nw-center { text-align: center; }
.nw-theme .nw-center :is(.nw-section-head, .content-hyperlink) { justify-content: center; }

/* Product list variants (Mini-Shop). */
.nw-theme .nw-cards-portrait .mini-shop__media { aspect-ratio: 4 / 5; }
.nw-theme .nw-cards-landscape .mini-shop__media { aspect-ratio: 4 / 3; }
.nw-theme .nw-cards-framed .mini-shop__product { padding: .6rem .6rem .9rem; border: var(--nw-border-width, 1px) solid var(--nw-border); border-radius: var(--theme-radius); background: var(--theme-paper); }
.nw-theme .nw-cards-framed .mini-shop__card-body { padding-inline: .2rem; }

/*
 * Studio theme "Studio Halm": warm paper, ink, a quiet grotesk and italic serif accents
 * ({{nw_italic::…}} in headlines). For one-person studios that take appointments online.
 * Sections come from theme-base and the sections bundle, the booking from the booking
 * bundle; this file only styles them. Colors follow the --nw-* and --theme-* tokens, so
 * the theme form can override them.
 */
@font-face { font-family: "Instrument Serif"; font-style: italic; font-weight: 400; font-display: swap; src: url("../../bundles/bookingtheme/fonts/instrument-serif-latin-400-italic.woff2") format("woff2"); }
@font-face { font-family: "Instrument Serif"; font-style: normal; font-weight: 400; font-display: swap; src: url("../../bundles/bookingtheme/fonts/instrument-serif-latin-400-normal.woff2") format("woff2"); }

.nw-booking-theme {
  /* Package defaults, kept in line with DesignSettings::SURFACE_DEFAULTS. */
  --theme-paper: #f7f5f0;
  --theme-ink: #1c1b19;
  --theme-muted: #6f6a62;
  --theme-body-font: "Helvetica Neue", Helvetica, Arial;
  --theme-heading-font: "Helvetica Neue", Helvetica, Arial;
  --theme-tile: #ece8df;
  --theme-callout: #1c1b19;
  --theme-success: #3d6b4f;
  --nw-border: #e4dfd5;
  --nw-focus: #1c1b19;
  --nw-studio-serif: "Instrument Serif", Georgia, serif;
  /* The studio look sets headlines in the grotesk; the theme form's heading font is not used. */
  --nw-studio-sans: "Helvetica Neue", Helvetica, Arial, sans-serif;
  --nw-studio-card: #fffefb;
  --nw-studio-signal: #c2643c;
  font-size: 1.0625rem;
  letter-spacing: -.005em;
  -webkit-font-smoothing: antialiased;
}

/* Type: a calm grotesk at medium weight with tight tracking; the italic serif carries the accent. */
.nw-booking-theme :is(h1, h2, h3, .nw-brand, .nw-footer h2) { font-family: var(--nw-studio-sans); font-weight: 500; letter-spacing: -.035em; line-height: 1.05; }
.nw-booking-theme h1 { font-size: clamp(2.6rem, 6.4vw, 5.4rem); }
.nw-booking-theme h2 { font-size: clamp(1.9rem, 3.6vw, 3rem); }
.nw-booking-theme h3 { font-size: 1.15rem; letter-spacing: -.015em; line-height: 1.25; }
.nw-booking-theme .nw-booking-italic,
.nw-booking-theme :is(h1, h2) em {
  font-family: var(--nw-studio-serif);
  font-style: italic;
  font-weight: 400;
  letter-spacing: -.01em;
}
.nw-booking-theme .nw-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  font-size: .9rem;
  letter-spacing: 0;
  color: var(--theme-muted);
}
.nw-booking-theme .nw-eyebrow::before { content: ""; width: .5rem; height: .5rem; border-radius: 50%; background: var(--nw-studio-signal); }

/* Header: wordmark, quiet links, one dark pill. */
/* The header stays at the top while scrolling, slightly translucent. */
.nw-booking-theme #header { position: sticky; top: 0; z-index: 40; background: color-mix(in srgb, var(--theme-paper) 88%, transparent); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.nw-booking-theme .nw-brand { white-space: nowrap; font-weight: 600; letter-spacing: -.03em; }
.nw-booking-theme .nw-brand b { font-weight: 600; }
.nw-booking-theme .nw-desktop-nav a { font-weight: 400; color: var(--theme-ink); }
.nw-booking-theme .nw-button { white-space: nowrap; padding: .7em 1.35em; border: 0; font-weight: 500; letter-spacing: -.01em; transition: transform .2s ease, background-color .2s ease; }
.nw-booking-theme .nw-button:hover { transform: translateY(-1px); }
.nw-booking-theme :is(.nw-button--secondary, .nw-button-secondary) { background: transparent; color: var(--theme-ink); box-shadow: none; }
.nw-booking-theme :is(.nw-button--secondary, .nw-button-secondary)::after { content: " →"; }
.nw-booking-theme .nw-mobile-cta { margin: 1.5rem 0 0; }
.nw-booking-theme .nw-mobile-cta .nw-button { width: 100%; }

/* Hero: large type left, the photo in soft rounded corners. */
.nw-booking-theme .nw-hero { gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.nw-booking-theme .nw-hero h1 { margin-bottom: 1.6rem; }
.nw-booking-theme .nw-hero .nw-section__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; max-width: none; margin: 0; }
.nw-booking-theme .nw-hero__text { max-width: 36ch; font-size: 1.15rem; color: var(--theme-muted); }
.nw-booking-theme .nw-hero__image { border-radius: 24px; }

/* Promises: a thin row instead of tick boxes. */
.nw-booking-theme .nw-promises .nw-usps { border-block-color: var(--nw-border); font-size: .95rem; }
.nw-booking-theme .nw-promises .nw-usps__item::before { content: "" / ""; display: inline-block; width: .4rem; height: .4rem; margin: 0 .6rem .15rem 0; border-radius: 50%; background: var(--nw-studio-signal); vertical-align: middle; }

/* Section heads: headline left, intro right, as in a portfolio. */
.nw-booking-theme .nw-section__head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: .5rem 2rem; max-width: none; }
.nw-booking-theme .nw-section__intro { max-width: 34ch; margin: 0; color: var(--theme-muted); }

/* Selected work: Contao's news list with the template news_nw_work, three columns. */
.nw-booking-theme .nw-booking-work { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1.25rem, 3vw, 2rem); }
.nw-booking-theme .nw-booking-work > :is(h1, h2, h3) { grid-column: 1 / -1; margin: 0 0 .5rem; }
.nw-booking-theme .nw-booking-work > :not(.nw-work, h1, h2, h3) { grid-column: 1 / -1; }
.nw-booking-theme .nw-work { display: flex; flex-direction: column; gap: .9rem; margin: 0; }
.nw-booking-theme .nw-work__image { aspect-ratio: 4 / 3; margin: 0; overflow: hidden; border-radius: 14px; background: var(--theme-tile); }
.nw-booking-theme .nw-work__image img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.nw-booking-theme .nw-work:hover .nw-work__image img { transform: scale(1.025); }
.nw-booking-theme .nw-work__text { display: grid; grid-template-columns: 1fr auto; gap: .2rem 1rem; align-items: baseline; }
.nw-booking-theme .nw-work h3 { margin: 0; font-size: 1.05rem; font-weight: 500; letter-spacing: -.015em; }
.nw-booking-theme .nw-work h3 a { color: inherit; text-decoration: none; }
.nw-booking-theme .nw-work h3 a::after { content: " →"; opacity: 0; transition: opacity .2s ease; }
.nw-booking-theme .nw-work:hover h3 a::after { opacity: 1; }
.nw-booking-theme .nw-work__meta { margin: 0; font-size: .85rem; color: var(--theme-muted); }
.nw-booking-theme .nw-work__teaser { grid-column: 1 / -1; font-size: .95rem; color: var(--theme-muted); }
.nw-booking-theme .nw-work__teaser p { margin: 0; }

/* Project page: Contao's news reader with the template news_nw_work_full. */
.nw-booking-theme .nw-work-full { display: flex; flex-direction: column; gap: clamp(1.5rem, 4vw, 2.5rem); }
.nw-booking-theme .nw-work-full > figure { margin: 0; overflow: hidden; border-radius: 20px; }
.nw-booking-theme .nw-work-full__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .5rem 2rem; }
.nw-booking-theme .nw-work-full__head h1 { margin: 0; }
.nw-booking-theme .nw-work-full__image { margin: clamp(1.5rem, 4vw, 2.5rem) 0; overflow: hidden; border-radius: 20px; }
.nw-booking-theme .nw-work-full__image img { display: block; width: 100%; height: auto; }
.nw-booking-theme .nw-work-full__text { max-width: 44rem; font-size: 1.15rem; }
.nw-booking-theme .nw-booking-work-detail .back a { color: inherit; }

/* Contao's gallery: portrait crops in rounded corners. */
.nw-booking-theme .nw-booking-gallery ul { gap: clamp(.75rem, 2vw, 1.25rem); }
.nw-booking-theme .nw-booking-gallery figure { border-radius: 16px; }

/* Host of the appointment: a person element as a small avatar row above the booking. */
.nw-booking-theme .nw-booking-host { display: flex; align-items: center; gap: .9rem; padding: 0; background: none; text-align: left; }
.nw-booking-theme .nw-booking-host .nw-person__image { flex: none; width: 3.5rem; height: 3.5rem; aspect-ratio: 1; margin: 0; overflow: hidden; border-radius: 50%; box-shadow: 0 0 0 3px var(--theme-paper), 0 0 0 4px var(--nw-border); }
.nw-booking-theme .nw-booking-host .nw-person__image img { width: 100%; height: 100%; object-fit: cover; border-radius: 0; }
.nw-booking-theme .nw-booking-host .nw-person__text { display: grid; gap: .1rem; }
.nw-booking-theme .nw-booking-host.nw-person h3 { margin: 0; font-size: 1rem; font-weight: 500; letter-spacing: -.01em; }
.nw-booking-theme .nw-booking-host .nw-person__role { margin: 0; font-size: .875rem; color: var(--theme-muted); }
.nw-booking-theme .mod_article > .nw-booking-host + * { margin-top: 1.25rem; }

/* Steps and features: hairlines, serif numbers. */
.nw-booking-theme :is(.nw-steps__list, .nw-features__list) > li { padding: 1.5rem 0 0; border: 0; border-top: 1px solid var(--theme-ink); border-radius: 0; background: none; box-shadow: none; }
.nw-booking-theme .nw-steps__number { display: block; width: auto; height: auto; border: 0; border-radius: 0; background: none; text-align: left; color: var(--theme-ink); font: italic 400 2.2rem/1 var(--nw-studio-serif); }
.nw-booking-theme .nw-steps__list > li::after { display: none; }
.nw-booking-theme .nw-features__icon { color: var(--nw-studio-signal); }

/* Picture and text, page heads, figures. */
.nw-booking-theme .nw-split__image,
.nw-booking-theme .nw-page-head__image { border-radius: 20px; }
/* Portraits: faces sit in the upper third, so wide crops keep the head. */
.nw-booking-theme :is(.nw-page-head__image, .nw-split__image, .nw-hero__image) img { object-position: 50% 22%; }
.nw-booking-theme .nw-page-head h1 { max-width: 16ch; }
.nw-booking-theme .nw-page-head__lead { max-width: 46ch; font-size: 1.15rem; color: var(--theme-muted); }
.nw-booking-theme .nw-figures__list b { font: italic 400 clamp(2.6rem, 5vw, 3.6rem)/1 var(--nw-studio-serif); letter-spacing: -.01em; }

/* Closing callout: an ink card with a light pill. */
.nw-booking-theme .nw-callout { display: flex; flex-direction: column; align-items: center; gap: 1.25rem; padding: clamp(2.5rem, 7vw, 5.5rem) clamp(1.5rem, 5vw, 4rem); border-radius: 28px; background: var(--theme-ink); color: var(--theme-paper); text-align: center; }
.nw-booking-theme .nw-callout :is(h2, p) { margin-inline: auto; color: inherit; }
.nw-booking-theme .nw-callout h2 { max-width: 22ch; }
.nw-booking-theme .nw-callout p { max-width: 44ch; color: color-mix(in srgb, var(--theme-paper) 72%, transparent); }
.nw-booking-theme .nw-callout :is(a.nw-button, .nw-section__actions a) { background: var(--theme-paper); color: var(--theme-ink); }

/* Footer. */
.nw-booking-theme #footer { border-top: 1px solid var(--nw-border); }
.nw-booking-theme .nw-footer h2 { font-weight: 600; letter-spacing: -.03em; }

/*
 * Appointment booking (nordwerk/contao-booking-bundle). The bundle's base styles have no
 * specificity; these rules turn the element into a calm panel with a round-day calendar,
 * pill times and a quiet form. Container queries keep it right in any column width.
 */
.nw-booking-theme .booking {
  --booking-ink: var(--theme-ink);
  --booking-muted: var(--theme-muted);
  --booking-faint: color-mix(in srgb, var(--theme-muted) 45%, var(--theme-paper));
  --booking-line: var(--nw-border);
  --booking-ground: var(--nw-studio-card);
  --booking-panel: transparent;
  --booking-accent: var(--theme-ink);
  --booking-on-accent: var(--theme-paper);
  --booking-accent-soft: var(--theme-tile);
  --booking-radius: 999px;
  --booking-error-bg: #f6e3da;
  --booking-error-ink: #7d2e14;
}
.nw-booking-theme .nw-booking-panel {
  padding: clamp(1.25rem, 4vw, 2.75rem);
  border: 1px solid var(--nw-border);
  border-radius: 28px;
  background: var(--nw-studio-card);
  box-shadow: 0 1px 0 rgba(28, 27, 25, .03), 0 24px 60px -32px rgba(28, 27, 25, .18);
}
.nw-booking-theme .booking__meta { gap: .5rem; margin-bottom: clamp(1.5rem, 3vw, 2.25rem); }
.nw-booking-theme .booking__meta > span { padding: .35rem .8rem; border: 1px solid var(--nw-border); border-radius: 999px; font-size: .85rem; color: var(--theme-muted); }
.nw-booking-theme .booking__meta > .booking__type { border-color: var(--theme-ink); background: var(--theme-ink); color: var(--theme-paper); font-weight: 500; }
.nw-booking-theme .booking__pick { gap: clamp(1.5rem, 4cqi, 3.5rem); }
@container booking (min-width: 641px) {
  .nw-booking-theme .booking__pick { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); }
  .nw-booking-theme .booking__times-column { padding-left: clamp(0rem, 3cqi, 2.5rem); border-left: 1px solid var(--nw-border); }
}
.nw-booking-theme .booking__label { margin-bottom: 1rem; font-size: .8rem; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; color: var(--theme-muted); }
.nw-booking-theme .booking__calendar { padding: 0; }
.nw-booking-theme .booking__month { font-size: 1.05rem; font-weight: 500; letter-spacing: -.01em; }
.nw-booking-theme .booking__nav { border: 1px solid var(--nw-border); }
.nw-booking-theme .booking__nav:hover:not(:disabled) { border-color: var(--theme-ink); }
.nw-booking-theme .booking__grid { gap: 6px; margin-top: .75rem; }
.nw-booking-theme .booking__weekday { font-weight: 500; font-size: .75rem; }
.nw-booking-theme .booking__dayoff,
.nw-booking-theme .booking__daybtn { width: 100%; max-width: 3rem; margin-inline: auto; border-radius: 50%; font-size: .95rem; }
.nw-booking-theme .booking__daybtn { position: relative; border: 0; background: var(--theme-tile); font-weight: 500; transition: background-color .15s ease, color .15s ease; }
.nw-booking-theme .booking__daybtn::after { content: ""; position: absolute; bottom: 18%; left: 50%; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; background: var(--nw-studio-signal); }
.nw-booking-theme .booking__daybtn:hover { background: color-mix(in srgb, var(--theme-ink) 12%, var(--theme-tile)); }
.nw-booking-theme .booking__daybtn[aria-pressed="true"] { background: var(--theme-ink); color: var(--theme-paper); }
.nw-booking-theme .booking__daybtn[aria-pressed="true"]::after { background: var(--theme-paper); }
.nw-booking-theme .booking__day { margin-bottom: 1rem; font: italic 400 1.6rem/1.1 var(--nw-studio-serif); letter-spacing: -.01em; }
.nw-booking-theme .booking__times { grid-template-columns: repeat(auto-fill, minmax(5.5rem, 1fr)); gap: .5rem; }
.nw-booking-theme .booking__time { height: 46px; border-color: var(--nw-border); background: transparent; font-weight: 500; font-variant-numeric: tabular-nums; transition: border-color .15s ease, background-color .15s ease, color .15s ease; }
.nw-booking-theme .booking__time:hover { border-color: var(--theme-ink); background: var(--theme-ink); color: var(--theme-paper); }
.nw-booking-theme .booking__chosen { padding: .9rem 1.2rem; border-radius: 16px; background: var(--theme-tile); font-weight: 500; }
.nw-booking-theme .booking__heading { font-size: clamp(1.5rem, 3vw, 2rem); font-weight: 500; letter-spacing: -.03em; }
.nw-booking-theme .booking__form { max-width: 42rem; }
.nw-booking-theme .booking__field label { font-size: .85rem; font-weight: 500; }
.nw-booking-theme .booking__field :is(input, textarea) { padding: .85rem 1rem; border-color: var(--nw-border); border-radius: 14px; background: var(--theme-paper); transition: border-color .15s ease, background-color .15s ease; }
.nw-booking-theme .booking__field :is(input, textarea):focus { border-color: var(--theme-ink); background: var(--nw-studio-card); outline: none; }
.nw-booking-theme .booking__consent { color: var(--theme-muted); }
.nw-booking-theme .booking__consent input { width: 1.15rem; height: 1.15rem; margin-top: .15rem; accent-color: var(--theme-ink); flex: none; }
.nw-booking-theme .booking__submit { padding: 1rem 1.8rem; font-size: 1rem; font-weight: 500; }
.nw-booking-theme .booking__done { padding: clamp(.5rem, 3cqi, 2rem) 0; text-align: center; }
.nw-booking-theme .booking__done::before {
  content: "";
  display: block;
  width: 3.5rem;
  height: 3.5rem;
  margin: 0 auto 1.25rem;
  border-radius: 50%;
  background: var(--theme-ink) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f7f5f0' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 1.6rem no-repeat;
}
.nw-booking-theme .booking__done .booking__chosen { display: inline-block; }
.nw-booking-theme .booking__done .booking__hint { max-width: 38ch; margin-inline: auto; }

@container booking (max-width: 640px) {
  .nw-booking-theme .booking__times-column { padding: 1.5rem 0 0; border-left: 0; border-top: 1px solid var(--nw-border); }
  .nw-booking-theme .booking__submit { width: 100%; }
}

@media (max-width: 47.99rem) {
  /* On phones the booking button sits in the menu sheet. */
  .nw-booking-theme .nw-header-actions > .nw-button { display: none; }
  .nw-booking-theme .nw-booking-panel { padding: 1.25rem 1rem 1.5rem; border-radius: 22px; }
  .nw-booking-theme .nw-callout { border-radius: 22px; }
  .nw-booking-theme .nw-section__head { display: block; }
  .nw-booking-theme .nw-section__intro { margin-top: .6rem; }
  .nw-booking-theme .nw-booking-work { grid-template-columns: minmax(0, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  .nw-booking-theme :is(.nw-button, .nw-work__image img, .booking__daybtn, .booking__time) { transition: none; }
}

