/*!
 * RS UI – Design-System der Ruben-Sill-Website
 * ---------------------------------------------------------------------------
 * Tokens (--rs-*) werden vom Theme mit den Werten aus „RS Design“ überschrieben.
 * Hier stehen nur die Standardwerte, damit Widgets auch ohne Theme gut aussehen.
 *
 * Breakpoints (identisch in Theme, Elementor-Kit und Widgets):
 *   Mobil  ≤ 767px   ·  Tablet 768–1199px  ·  Desktop HD 1200–1919px  ·  Groß ≥ 1920px
 * ---------------------------------------------------------------------------
 */

:root {
	/* Farben */
	--rs-c-ink: #101b2d;
	--rs-c-ink-soft: #2b3648;
	--rs-c-paper: #f3f1ee;
	--rs-c-stone: #ddd5cc;
	--rs-c-surface: #ffffff;
	--rs-c-line: #d9d2ca;
	--rs-c-muted: #5b6472;
	--rs-c-accent: #7b2232;
	--rs-c-accent-ink: #ffffff;
	--rs-c-brass: #b08a4a;
	--rs-c-sage: #4e6e63;
	--rs-c-dark: #0e1726;
	--rs-c-on-dark: #efece8;
	--rs-c-on-dark-muted: #a8adb7;
	--rs-c-focus: #b08a4a;
	--rs-c-success: #3f7a5c;
	--rs-c-error: #a3312f;
	--rs-area: var(--rs-c-accent);

	/* Schrift */
	--rs-f-display: "Albert Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
	--rs-f-body: "Albert Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
	--rs-f-voice: "Newsreader", Georgia, "Times New Roman", serif;
	--rs-f-ui: "Albert Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;

	--rs-fs-hero: clamp(2.75rem, 1.4rem + 5.6vw, 7.25rem);
	--rs-fs-h1: clamp(2.4rem, 1.5rem + 3.6vw, 5rem);
	--rs-fs-h2: clamp(2rem, 1.35rem + 2.6vw, 3.75rem);
	--rs-fs-h3: clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem);
	--rs-fs-h4: clamp(1.25rem, 1.1rem + .6vw, 1.6rem);
	--rs-fs-h5: 1.15rem;
	--rs-fs-h6: 1rem;
	--rs-fs-lead: clamp(1.2rem, 1.05rem + .55vw, 1.6rem);
	--rs-fs-body: clamp(1rem, .96rem + .18vw, 1.125rem);
	--rs-fs-small: .875rem;
	--rs-fs-eyebrow: .95rem;
	--rs-fs-quote: clamp(1.6rem, 1.15rem + 1.9vw, 3rem);
	--rs-fs-card-title: clamp(1.3rem, 1.1rem + .7vw, 1.75rem);
	--rs-fs-button: 1rem;

	--rs-fw-display: 300;
	--rs-fw-heading: 350;
	--rs-fw-body: 400;
	--rs-fw-strong: 600;
	--rs-lh-display: 1.02;
	--rs-lh-heading: 1.12;
	--rs-lh-body: 1.6;
	--rs-lh-voice: 1.55;
	--rs-ls-display: -0.035em;
	--rs-ls-heading: -0.02em;

	/* Raster & Abstände */
	--rs-container: 1320px;
	--rs-container-wide: 1680px;
	--rs-gutter: clamp(20px, 4vw, 64px);
	--rs-gap: clamp(16px, 2vw, 32px);
	--rs-section: clamp(56px, 6.5vw, 120px);
	--rs-measure: 64ch;

	/* Formen */
	--rs-r-xs: 4px;
	--rs-r-s: 8px;
	--rs-r-m: 16px;
	--rs-r-l: 28px;
	--rs-r-xl: 48px;
	--rs-r-pill: 999px;
	/* „Blatt“-Form aus dem S-Bogen des Monogramms: eine Ecke weit gerundet */
	--rs-r-leaf: var(--rs-r-xs) var(--rs-r-xs) var(--rs-r-xl) var(--rs-r-xs);
	--rs-r-leaf-alt: var(--rs-r-xl) var(--rs-r-xs) var(--rs-r-xs) var(--rs-r-xs);

	--rs-shadow-1: 0 1px 2px rgb(16 27 45 / .05), 0 10px 30px -18px rgb(16 27 45 / .28);
	--rs-shadow-2: 0 40px 80px -40px rgb(16 27 45 / .45);

	/* Bewegung */
	--rs-ease: cubic-bezier(.2, .7, .1, 1);
	--rs-ease-out: cubic-bezier(.16, 1, .3, 1);
	--rs-ease-in-out: cubic-bezier(.65, 0, .35, 1);
	--rs-dur: .9s;
	--rs-dur-fast: .28s;
	--rs-line-w: 1.5px;
	--rs-header-h: 84px;
}

/* ===================================================================== Basis */
.rs-sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.rs-icon { display: inline-block; flex: none; vertical-align: middle; }
.rs-container { width: min(100% - 2 * var(--rs-gutter), var(--rs-container)); margin-inline: auto; }
.rs-container--wide { width: min(100% - 2 * var(--rs-gutter), var(--rs-container-wide)); }
.rs-br-m { display: none; }
@media (max-width: 767px) { .rs-br-d { display: none; } .rs-br-m { display: inline; } }

:where(.rs-w) { box-sizing: border-box; color: var(--rs-c-ink); font-family: var(--rs-f-body); }
:where(.rs-w) *, :where(.rs-w) *::before, :where(.rs-w) *::after { box-sizing: border-box; }
:where(.rs-w) img { max-width: 100%; height: auto; display: block; }

/* Sichtbarer Fokus überall */
:where(.rs-w, .rs-theme) :focus-visible { outline: 2px solid var(--rs-c-focus); outline-offset: 3px; border-radius: 4px; }

/* ===================================================================== Typografie */
.rs-title {
	font-family: var(--rs-f-display);
	font-weight: var(--rs-fw-heading);
	line-height: var(--rs-lh-heading);
	letter-spacing: var(--rs-ls-heading);
	margin: 0;
	text-wrap: balance;
	color: inherit;
}
.rs-title--hero { font-size: var(--rs-fs-hero); font-weight: var(--rs-fw-display); line-height: var(--rs-lh-display); letter-spacing: var(--rs-ls-display); }
.rs-title--1 { font-size: var(--rs-fs-h1); font-weight: var(--rs-fw-display); line-height: var(--rs-lh-display); letter-spacing: var(--rs-ls-display); }
.rs-title--2 { font-size: var(--rs-fs-h2); }
.rs-title--3 { font-size: var(--rs-fs-h3); }
.rs-title--4 { font-size: var(--rs-fs-h4); }
.rs-title--card { font-size: var(--rs-fs-card-title); }
.rs-title strong { font-weight: var(--rs-fw-strong); }

/* *Akzent* = die Lesestimme: Newsreader kursiv, gleiche Farbe – keine Farbspielerei */
.rs-em { font-family: var(--rs-f-voice); font-style: italic; font-weight: 400; letter-spacing: -0.01em; }
/* ==Markierung== = Linie, die sich unter dem Wort zeichnet */
.rs-mark { background-image: linear-gradient(var(--rs-area), var(--rs-area)); background-repeat: no-repeat; background-size: 0% var(--rs-line-w); background-position: 0 92%; transition: background-size 1.1s var(--rs-ease-out) .35s; padding-bottom: .04em; }
.is-in .rs-mark, .rs-mark.is-in, .rs-reduced .rs-mark, .elementor-editor-active .rs-mark { background-size: 100% var(--rs-line-w); }

.rs-eyebrow {
	display: inline-flex; align-items: center; gap: .7em;
	font-family: var(--rs-f-ui); font-size: var(--rs-fs-eyebrow); font-weight: 500;
	color: var(--rs-area); margin: 0 0 1.1rem; letter-spacing: .01em;
}
.rs-eyebrow::before { content: ""; width: 2.25em; height: var(--rs-line-w); background: currentColor; flex: none; }
.rs-eyebrow--plain::before { display: none; }

.rs-lead { font-family: var(--rs-f-voice); font-size: var(--rs-fs-lead); line-height: var(--rs-lh-voice); font-weight: 400; max-width: var(--rs-measure); margin: 0; color: var(--rs-c-ink-soft); text-wrap: pretty; }
.rs-text { font-size: var(--rs-fs-body); line-height: var(--rs-lh-body); max-width: var(--rs-measure); color: var(--rs-c-ink-soft); text-wrap: pretty; }
.rs-text > :first-child { margin-top: 0; } .rs-text > :last-child { margin-bottom: 0; }
.rs-text p { margin: 0 0 1em; }
.rs-text ul { padding-left: 1.1em; } .rs-text li { margin: .3em 0; }
.rs-small { font-size: var(--rs-fs-small); color: var(--rs-c-muted); }
.rs-heading { display: grid; gap: clamp(14px, 1.6vw, 22px); }
.rs-heading--center { justify-items: center; text-align: center; }
.rs-heading--center .rs-lead, .rs-heading--center .rs-text { margin-inline: auto; }

/* Dunkle Flächen */
.rs-on-dark { color: var(--rs-c-on-dark); --rs-c-ink-soft: var(--rs-c-on-dark); --rs-c-muted: var(--rs-c-on-dark-muted); --rs-c-line: rgb(255 255 255 / .16); }
.rs-on-dark .rs-eyebrow { color: color-mix(in srgb, var(--rs-area) 45%, #fff); }

/* ===================================================================== Buttons */
.rs-btn {
	--_bg: var(--rs-c-ink); --_fg: var(--rs-c-paper); --_bd: var(--_bg);
	position: relative; display: inline-flex; align-items: center; justify-content: center; gap: .6em;
	min-height: 52px; padding: .85em 1.6em;
	font-family: var(--rs-f-ui); font-size: var(--rs-fs-button); font-weight: 550; line-height: 1.2; letter-spacing: .005em;
	color: var(--_fg); background: var(--_bg); border: 1px solid var(--_bd); border-radius: var(--rs-r-pill);
	text-decoration: none; cursor: pointer; isolation: isolate; overflow: hidden;
	transform: translate3d(var(--rs-mx, 0), var(--rs-my, 0), 0);
	transition: transform .5s var(--rs-ease-out), color var(--rs-dur-fast), background-color var(--rs-dur-fast), border-color var(--rs-dur-fast);
	-webkit-tap-highlight-color: transparent;
}
.rs-btn::after { /* Füllwelle */
	content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit;
	background: var(--rs-area); transform: translateY(101%); transition: transform .55s var(--rs-ease-out);
}
.rs-btn:hover::after, .rs-btn:focus-visible::after { transform: translateY(0); }
.rs-btn:hover, .rs-btn:focus-visible { color: #fff; border-color: var(--rs-area); }
.rs-btn .rs-icon { width: 1.15em; height: 1.15em; transition: transform .45s var(--rs-ease-out); }
.rs-btn:hover .rs-icon--arrow-right, .rs-btn:hover .rs-icon--arrow-up-right { transform: translateX(3px); }
.rs-btn--accent { --_bg: var(--rs-area); --_fg: #fff; }
.rs-btn--accent::after { background: var(--rs-c-ink); }
.rs-btn--ghost { --_bg: transparent; --_fg: var(--rs-c-ink); --_bd: color-mix(in srgb, currentColor 35%, transparent); }
.rs-on-dark .rs-btn--ghost, .rs-btn--ghost.rs-btn--light { --_fg: var(--rs-c-on-dark); }
.rs-btn--light { --_bg: var(--rs-c-paper); --_fg: var(--rs-c-ink); }
.rs-btn--light:hover { color: #fff; }
.rs-btn--sm { min-height: 42px; padding: .6em 1.15em; font-size: .925rem; }
.rs-btn--lg { min-height: 60px; padding: 1em 2em; font-size: 1.075rem; }
.rs-btn--block { width: 100%; }
.rs-btn.is-loading { pointer-events: none; opacity: .7; }
.rs-btn[disabled] { opacity: .45; pointer-events: none; }

/* Textlink mit zeichnender Linie */
.rs-link {
	display: inline-flex; align-items: center; gap: .5em; font-family: var(--rs-f-ui); font-weight: 550;
	color: var(--rs-c-ink); text-decoration: none; padding-block: .25em;
	background: linear-gradient(currentColor, currentColor) 0 100% / 100% var(--rs-line-w) no-repeat;
	transition: background-size .5s var(--rs-ease-out), color var(--rs-dur-fast);
}
.rs-link:hover, .rs-link:focus-visible { background-size: 0 var(--rs-line-w); background-position: 100% 100%; color: var(--rs-area); }
.rs-link .rs-icon { width: 1.1em; height: 1.1em; }
.rs-on-dark .rs-link { color: var(--rs-c-on-dark); }

.rs-actions { display: flex; flex-wrap: wrap; gap: 12px 16px; align-items: center; }

.rs-icon-btn {
	display: inline-grid; place-items: center; width: 46px; height: 46px; border-radius: 50%;
	border: 1px solid var(--rs-c-line); background: transparent; color: inherit; cursor: pointer;
	transition: background-color var(--rs-dur-fast), border-color var(--rs-dur-fast), color var(--rs-dur-fast);
}
.rs-icon-btn:hover { background: var(--rs-c-ink); color: var(--rs-c-paper); border-color: var(--rs-c-ink); }
.rs-icon-btn[disabled] { opacity: .35; pointer-events: none; }

/* ===================================================================== Chips, Badges, Marke */
.rs-chip {
	display: inline-flex; align-items: center; gap: .45em; padding: .45em .95em;
	border: 1px solid var(--rs-c-line); border-radius: var(--rs-r-pill);
	font: 500 .875rem/1.2 var(--rs-f-ui); color: var(--rs-c-ink-soft); background: transparent; text-decoration: none;
}
.rs-chip--area { border-color: color-mix(in srgb, var(--rs-area) 40%, transparent); color: var(--rs-area); }
.rs-chip--area::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
button.rs-chip { cursor: pointer; transition: background-color var(--rs-dur-fast), color var(--rs-dur-fast), border-color var(--rs-dur-fast); }
button.rs-chip:hover { border-color: var(--rs-c-ink); }
button.rs-chip[aria-pressed="true"] { background: var(--rs-c-ink); color: var(--rs-c-paper); border-color: var(--rs-c-ink); }
.rs-chips { display: flex; flex-wrap: wrap; gap: 8px; }

/* Bereichs-Marke: RS-Monogramm + Bezeichnung (Markensprache des Logos) */
.rs-area-mark { display: inline-flex; align-items: center; gap: .55em; color: inherit; text-decoration: none; }
.rs-area-mark .rs-logo--mark { height: 1.9em; width: auto; }
.rs-area-mark__label { font: 300 .95em/1 var(--rs-f-ui); letter-spacing: .08em; text-transform: uppercase; }

.rs-logo { display: block; height: auto; }

/* Datums-Marke für Agenda */
.rs-date {
	display: grid; justify-items: start; gap: 2px; line-height: 1; color: var(--rs-c-ink);
	font-family: var(--rs-f-display); font-variant-numeric: tabular-nums;
}
.rs-date__day { font-size: clamp(2.2rem, 1.6rem + 2vw, 3.5rem); font-weight: 300; letter-spacing: -0.04em; }
.rs-date__month { font: 500 .9rem/1.1 var(--rs-f-ui); color: var(--rs-area); }
.rs-date__weekday { font: 400 .8rem/1.1 var(--rs-f-ui); color: var(--rs-c-muted); }

/* ===================================================================== Medien */
.rs-media { position: relative; overflow: hidden; border-radius: var(--rs-r-leaf); background: var(--rs-c-stone); isolation: isolate; }
.rs-media--alt { border-radius: var(--rs-r-leaf-alt); }
.rs-media--round { border-radius: var(--rs-r-l); }
.rs-media--none { border-radius: 0; }
.rs-media img, .rs-media video, .rs-media picture,
.elementor .rs-media img, .elementor .rs-media video, .elementor .rs-media picture { width: 100%; height: 100%; max-width: none; object-fit: cover; display: block; } /* .elementor-Variante schlägt Elementors „.elementor img { height:auto }“ */
.rs-media__inner { position: absolute; inset: -8% 0; transform: translate3d(0, var(--rs-depth-y, 0), 0) scale(1.02); will-change: transform; }
.rs-media__inner img, .elementor .rs-media__inner img { height: 100%; }
.rs-ratio { aspect-ratio: var(--rs-ratio, 4 / 5); }

/* ===================================================================== Verbindungslinie & Signatur */
.rs-line { position: relative; pointer-events: none; color: var(--rs-area); }
.rs-line svg { display: block; width: 100%; height: 100%; overflow: visible; }
.rs-line__path { fill: none; stroke: currentColor; stroke-width: var(--rs-line-w); stroke-linecap: round; vector-effect: non-scaling-stroke; }
.rs-line[data-rs-line="view"] .rs-line__path { stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 2.2s var(--rs-ease-in-out); }
.rs-line[data-rs-line="view"].is-drawn .rs-line__path { stroke-dashoffset: 0; }

.rs-signature { display: inline-block; color: var(--rs-c-ink); line-height: 0; width: var(--rs-sig-w, 220px); max-width: 100%; }
.rs-signature svg { width: 100%; height: auto; overflow: visible; }
.rs-on-dark .rs-signature { color: var(--rs-c-on-dark); }
.rs-signature .rs-signature__strokes path { stroke-dasharray: 1 1; stroke-dashoffset: 1; }
.rs-signature.is-drawing .rs-signature__strokes path {
	animation: rs-sig-draw calc(var(--rs-sig-dur, 2.6s) * var(--l, .05)) linear both;
	animation-delay: calc(var(--rs-sig-delay, 0s) + var(--rs-sig-dur, 2.6s) * var(--d, 0));
}
.rs-signature.is-instant .rs-signature__strokes path,
.rs-reduced .rs-signature .rs-signature__strokes path,
.elementor-editor-active .rs-signature .rs-signature__strokes path { animation: none; stroke-dashoffset: 0; }
html:not(.rs-js) .rs-signature .rs-signature__strokes path { stroke-dashoffset: 0; }
@keyframes rs-sig-draw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }

/* ===================================================================== Reveal-Zustände */
.rs-reveal-ready [data-rs-reveal]:not(.is-in),
.rs-reveal-ready [data-rs-stagger] > [data-rs-item]:not(.is-in),
.rs-reveal-ready [data-rs-stagger] [data-rs-item]:not(.is-in) { opacity: 0; }
[data-rs-reveal], [data-rs-item] {
	transition: opacity var(--rs-dur) var(--rs-ease-out) var(--rs-delay, 0ms),
		transform var(--rs-dur) var(--rs-ease-out) var(--rs-delay, 0ms),
		filter var(--rs-dur) var(--rs-ease-out) var(--rs-delay, 0ms),
		clip-path 1.2s var(--rs-ease-out) var(--rs-delay, 0ms);
}
.rs-reveal-ready [data-rs-reveal="rise"]:not(.is-in), .rs-reveal-ready [data-rs-item]:not(.is-in) { transform: translate3d(0, 28px, 0); }
.rs-reveal-ready [data-rs-reveal="blur"]:not(.is-in) { filter: blur(12px); transform: translate3d(0, 12px, 0); }
.rs-reveal-ready [data-rs-reveal="scale"]:not(.is-in) { transform: scale(.94); }
.rs-reveal-ready [data-rs-reveal="clip"]:not(.is-in) { opacity: 1; clip-path: inset(100% 0 0 0); }
.rs-reveal-ready [data-rs-reveal="mask"]:not(.is-in) { opacity: 1; clip-path: inset(0 100% 0 0); }
[data-rs-reveal="clip"].is-in, [data-rs-reveal="mask"].is-in { clip-path: inset(0 0 0 0); }

/* Split: Wörter steigen aus einer Maske */
.rs-split .rs-split__w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .08em; margin-bottom: -.08em; }
.rs-split .rs-split__nb { display: inline-block; white-space: nowrap; vertical-align: top; }
.rs-split .rs-split__i, .rs-split .rs-split__c { display: inline-block; transition: transform 1s var(--rs-ease-out), opacity 1s var(--rs-ease-out); transition-delay: calc(var(--rs-delay, 0ms) + var(--i, 0) * 45ms); }
.rs-reveal-ready [data-rs-reveal="split"] { opacity: 1 !important; }
.rs-reveal-ready [data-rs-reveal="split"]:not(.is-in) .rs-split__i,
.rs-reveal-ready [data-rs-reveal="split"]:not(.is-in) .rs-split__c { transform: translate3d(0, 105%, 0); opacity: 0; }

.rs-reduced [data-rs-reveal], .rs-reduced [data-rs-item], .is-instant,
.elementor-editor-active [data-rs-reveal], .elementor-editor-active [data-rs-item] { opacity: 1 !important; transform: none !important; filter: none !important; clip-path: none !important; transition: none !important; }
.elementor-editor-active .rs-split__i, .elementor-editor-active .rs-split__c, .rs-reduced .rs-split__i { transform: none !important; opacity: 1 !important; }

/* Tiefe */
[data-rs-depth] { transform: translate3d(var(--rs-px, 0px), calc(var(--rs-depth-y, 0px) + var(--rs-py, 0px)), 0); will-change: transform; }
[data-rs-pointer-depth]:not([data-rs-depth]) { transform: translate3d(var(--rs-px, 0px), var(--rs-py, 0px), 0); }
[data-rs-tilt] { transform: perspective(900px) rotateX(var(--rs-tilt-x, 0deg)) rotateY(var(--rs-tilt-y, 0deg)); transition: transform .6s var(--rs-ease-out); transform-style: preserve-3d; }
.rs-reduced [data-rs-depth], .rs-reduced [data-rs-tilt] { transform: none !important; }

/* ===================================================================== Sammlungen: Layout je Gerät
 * Widgets setzen: .rs-collection rs-l-d-{layout} rs-l-t-{layout} rs-l-m-{layout}
 * Layouts: grid | list | compact | stack | panels | bento | slider
 * Spalten über --rs-cols-d / --rs-cols-t / --rs-cols-m
 */
.rs-collection { --rs-cols-d: 3; --rs-cols-t: 2; --rs-cols-m: 1; --rs-cols: var(--rs-cols-d); display: grid; gap: var(--rs-gap); }
.rs-collection__item { min-width: 0; position: relative; }

/* Desktop & Groß */
@media (min-width: 1200px) {
	.rs-l-d-grid { grid-template-columns: repeat(var(--rs-cols-d), minmax(0, 1fr)); }
	.rs-l-d-list, .rs-l-d-compact { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.rs-l-d-bento { grid-template-columns: repeat(6, minmax(0, 1fr)); grid-auto-flow: dense; }
	.rs-l-d-bento > .rs-collection__item { grid-column: span 2; }
	.rs-l-d-bento > .rs-collection__item:nth-child(5n+1) { grid-column: span 4; grid-row: span 2; }
	.rs-l-d-bento > .rs-collection__item:nth-child(5n+4) { grid-column: span 3; }
	.rs-l-d-bento > .rs-collection__item:nth-child(5n+5) { grid-column: span 3; }
	.rs-l-d-panels { display: flex; gap: 10px; min-height: var(--rs-panels-h, 560px); }
	.rs-l-d-stack { grid-template-columns: minmax(0, 1fr); --rs-stack: 1; }
	.rs-l-d-slider { display: block; }
}
/* Tablet */
@media (min-width: 768px) and (max-width: 1199px) {
	.rs-collection { --rs-cols: var(--rs-cols-t); }
	.rs-l-t-grid { grid-template-columns: repeat(var(--rs-cols-t), minmax(0, 1fr)); }
	.rs-l-t-list, .rs-l-t-compact { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.rs-l-t-bento { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.rs-l-t-bento > .rs-collection__item:nth-child(3n+1) { grid-column: span 2; }
	.rs-l-t-panels { display: flex; gap: 8px; min-height: var(--rs-panels-h-t, 480px); }
	.rs-l-t-stack { grid-template-columns: minmax(0, 1fr); --rs-stack: 1; }
	.rs-l-t-slider { display: block; }
}
/* Mobil */
@media (max-width: 767px) {
	.rs-collection { --rs-cols: var(--rs-cols-m); gap: 14px; }
	.rs-l-m-grid { grid-template-columns: repeat(var(--rs-cols-m), minmax(0, 1fr)); }
	.rs-l-m-list, .rs-l-m-compact { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.rs-l-m-bento { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.rs-l-m-bento > .rs-collection__item:nth-child(3n+1) { grid-column: span 2; }
	.rs-l-m-stack { grid-template-columns: minmax(0, 1fr); --rs-stack: 1; gap: 18px; }
	.rs-l-m-panels { grid-template-columns: minmax(0, 1fr); }
	.rs-l-m-slider { display: block; }
}

/* Gestapelte Karten (sticky stack) – an jedem Gerät, das „stack“ nutzt */
@media (min-width: 1200px) { .rs-l-d-stack > .rs-collection__item { position: sticky; top: calc(var(--rs-header-h) + 24px + var(--n, 0) * 14px); } }
@media (min-width: 768px) and (max-width: 1199px) { .rs-l-t-stack > .rs-collection__item { position: sticky; top: calc(var(--rs-header-h) + 18px + var(--n, 0) * 12px); } }
@media (max-width: 767px) { .rs-l-m-stack > .rs-collection__item { position: sticky; top: calc(var(--rs-header-h-m, 68px) + 14px + var(--n, 0) * 10px); } }
[data-rs-stack-card] { transform: scale(var(--rs-stack-scale, 1)); transform-origin: 50% 0; transition: transform .2s linear; }
[data-rs-stack-card]::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: var(--rs-c-ink); opacity: var(--rs-stack-dim, 0); pointer-events: none; transition: opacity .2s linear; }

/* ===================================================================== Panels (Bereichs-Bühne, Desktop) */
.rs-panel { position: relative; flex: 1 1 0; min-width: 0; overflow: hidden; border-radius: var(--rs-r-leaf); background: var(--rs-c-ink); color: var(--rs-c-on-dark); transition: flex-grow .9s var(--rs-ease-out); }
.rs-panel.is-active { flex-grow: 3.2; }
@media (max-width: 767px) { .rs-l-m-panels .rs-panel { flex: none; } }

/* ===================================================================== Slider ohne Scrollleiste */
.rs-slider { position: relative; overflow: hidden; }
.rs-slider .rs-slider__viewport { overflow: hidden; margin-inline: -2px; padding-inline: 2px; }
.rs-slider.is-slider .rs-slider__track { display: grid !important; grid-auto-flow: column; grid-auto-columns: calc((100% - (var(--rs-per, 1) - 1) * var(--rs-gap)) / var(--rs-per, 1)); grid-template-columns: none !important; gap: var(--rs-gap); transition: transform .8s var(--rs-ease-out); touch-action: pan-y; translate: var(--rs-drag, 0px) 0; }
@media (min-width: 1200px) { .rs-slider { --rs-per: var(--rs-per-d, 3); } }
@media (min-width: 768px) and (max-width: 1199px) { .rs-slider { --rs-per: var(--rs-per-t, 2); } }
@media (max-width: 767px) { .rs-slider { --rs-per: var(--rs-per-m, 1); } .rs-slider.is-slider .rs-slider__track { grid-auto-columns: calc(86% - var(--rs-gap) * .14); } }
.rs-slider__nav { display: none; align-items: center; gap: 10px; margin-top: 22px; }
.rs-slider.is-slider .rs-slider__nav { display: flex; }
.rs-slider__dots { display: flex; gap: 6px; margin-right: auto; }
.rs-slider__dot { width: 28px; height: 28px; border: 0; padding: 0; background: none; cursor: pointer; position: relative; }
.rs-slider__dot::before { content: ""; position: absolute; left: 4px; right: 4px; top: 50%; height: 2px; background: var(--rs-c-line); transition: background-color var(--rs-dur-fast); }
.rs-slider__dot[aria-current="true"]::before { background: var(--rs-c-ink); }

/* ===================================================================== Akkordeon */
.rs-acc { border-top: 1px solid var(--rs-c-line); }
.rs-acc__item { border-bottom: 1px solid var(--rs-c-line); }
.rs-acc__trigger { all: unset; box-sizing: border-box; width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 22px 0; cursor: pointer; font: var(--rs-fw-heading) var(--rs-fs-h4)/1.25 var(--rs-f-display); letter-spacing: var(--rs-ls-heading); color: var(--rs-c-ink); }
.rs-acc__trigger:focus-visible { outline: 2px solid var(--rs-c-focus); outline-offset: 4px; }
.rs-acc__icon { flex: none; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--rs-c-line); display: grid; place-items: center; transition: background-color var(--rs-dur-fast), color var(--rs-dur-fast); }
.rs-acc__icon svg { transition: transform .5s var(--rs-ease-out); }
.rs-acc__item.is-open .rs-acc__icon { background: var(--rs-c-ink); color: var(--rs-c-paper); }
.rs-acc__item.is-open .rs-acc__icon svg { transform: rotate(45deg); }
.rs-acc__panel { overflow: hidden; transition: height .55s var(--rs-ease-out); }
.rs-acc__body { padding: 0 0 26px; }

/* ===================================================================== Tabs & Unternavigation */
.rs-tabs__list { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 28px; }
.rs-tabs__tab { all: unset; cursor: pointer; padding: .7em 1.2em; border-radius: var(--rs-r-pill); font: 500 .95rem/1.2 var(--rs-f-ui); color: var(--rs-c-ink-soft); border: 1px solid var(--rs-c-line); }
.rs-tabs__tab[aria-selected="true"] { background: var(--rs-c-ink); color: var(--rs-c-paper); border-color: var(--rs-c-ink); }
.rs-tabs__tab:focus-visible { outline: 2px solid var(--rs-c-focus); outline-offset: 3px; }

.rs-subnav { position: sticky; top: calc(var(--rs-header-h) + 10px); z-index: 30; display: flex; justify-content: center; pointer-events: none; }
.rs-subnav__inner { pointer-events: auto; display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; padding: 5px; border-radius: var(--rs-r-pill); background: color-mix(in srgb, var(--rs-c-paper) 82%, transparent); backdrop-filter: blur(14px) saturate(1.3); -webkit-backdrop-filter: blur(14px) saturate(1.3); box-shadow: var(--rs-shadow-1); max-width: 100%; }
.rs-subnav a { padding: .6em 1.05em; border-radius: var(--rs-r-pill); font: 500 .9rem/1.1 var(--rs-f-ui); color: var(--rs-c-ink-soft); text-decoration: none; transition: background-color var(--rs-dur-fast), color var(--rs-dur-fast); white-space: nowrap; }
.rs-subnav a:hover { color: var(--rs-c-ink); }
.rs-subnav a.is-current { background: var(--rs-c-ink); color: var(--rs-c-paper); }
@media (max-width: 767px) { .rs-subnav { top: calc(var(--rs-header-h-m, 68px) + 6px); } .rs-subnav a { padding: .55em .8em; font-size: .82rem; } }

/* ===================================================================== Modal */
.rs-modal { width: min(920px, calc(100% - 24px)); max-height: calc(100dvh - 32px); padding: 0; border: 0; border-radius: var(--rs-r-leaf); background: var(--rs-c-paper); color: var(--rs-c-ink); box-shadow: var(--rs-shadow-2); overflow: auto; }
.rs-modal::backdrop { background: rgb(14 23 38 / .62); backdrop-filter: blur(6px); }
.rs-modal[open] { animation: rs-modal-in .6s var(--rs-ease-out); }
.rs-modal__close { position: sticky; top: 14px; float: right; margin: 14px 14px 0 0; z-index: 2; background: var(--rs-c-paper); }
.rs-modal__body { padding: clamp(24px, 4vw, 56px); }
@keyframes rs-modal-in { from { opacity: 0; transform: translateY(24px) scale(.98); } to { opacity: 1; transform: none; } }
.rs-modal-open { overflow: hidden; }

/* ===================================================================== Marquee */
.rs-marquee { overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.rs-marquee__track { display: flex; width: max-content; }
.rs-marquee__inner { display: flex; gap: var(--rs-marquee-gap, 56px); padding-right: var(--rs-marquee-gap, 56px); align-items: center; }
.rs-marquee.is-running .rs-marquee__track { animation: rs-marquee var(--rs-marquee-dur, 40s) linear infinite; }
.rs-marquee:hover .rs-marquee__track, .rs-marquee:focus-within .rs-marquee__track { animation-play-state: paused; }
.rs-marquee.is-static { mask-image: none; -webkit-mask-image: none; }
.rs-marquee.is-static .rs-marquee__inner { flex-wrap: wrap; }
@keyframes rs-marquee { to { transform: translateX(-50%); } }

/* ===================================================================== Formulare */
.rs-form { display: grid; gap: 18px 20px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rs-form > * { grid-column: span 2; }
.rs-form .rs-form__half { grid-column: span 1; }
@media (max-width: 767px) { .rs-form .rs-form__half { grid-column: span 2; } }
.rs-form__field { display: grid; gap: 7px; }
.rs-form__label { font: 500 .9rem/1.3 var(--rs-f-ui); color: var(--rs-c-ink); }
.rs-form__label .req { color: var(--rs-area); margin-left: 2px; }
.rs-form__input, .rs-form select, .rs-form textarea {
	width: 100%; min-height: 54px; padding: 14px 16px; font: 400 1rem/1.4 var(--rs-f-body); color: var(--rs-c-ink);
	background: var(--rs-c-surface); border: 1px solid var(--rs-c-line); border-radius: var(--rs-r-m);
	transition: border-color var(--rs-dur-fast), box-shadow var(--rs-dur-fast); appearance: none;
}
.rs-form textarea { min-height: 150px; resize: vertical; }
.rs-form select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23101b2d' stroke-width='1.6'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; padding-right: 44px; }
.rs-form__input:focus, .rs-form select:focus, .rs-form textarea:focus { outline: none; border-color: var(--rs-c-ink); box-shadow: 0 0 0 4px color-mix(in srgb, var(--rs-area) 18%, transparent); }
.rs-form.was-validated :invalid { border-color: var(--rs-c-error); }
.rs-form__hint { font-size: .85rem; color: var(--rs-c-muted); }
.rs-form__check { display: flex; gap: 12px; align-items: flex-start; font-size: .92rem; line-height: 1.5; color: var(--rs-c-ink-soft); }
.rs-form__check input { width: 20px; height: 20px; margin-top: 2px; accent-color: var(--rs-area); flex: none; }
.rs-form__status { min-height: 1.4em; font: 500 .95rem/1.4 var(--rs-f-ui); }
.rs-form__status[data-state="success"] { color: var(--rs-c-success); }
.rs-form__status[data-state="error"] { color: var(--rs-c-error); }
.rs-form__hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.rs-on-dark .rs-form__input, .rs-on-dark .rs-form select, .rs-on-dark .rs-form textarea { background: rgb(255 255 255 / .06); color: var(--rs-c-on-dark); border-color: rgb(255 255 255 / .2); }
.rs-on-dark .rs-form__label { color: var(--rs-c-on-dark); }

/* ===================================================================== Leere Zustände & Hinweise */
.rs-empty { padding: clamp(28px, 4vw, 48px); border: 1px dashed var(--rs-c-line); border-radius: var(--rs-r-leaf); text-align: left; display: grid; gap: 14px; justify-items: start; }
.rs-empty p { margin: 0; max-width: 52ch; color: var(--rs-c-ink-soft); }
.rs-editor-note { padding: 12px 14px; border-radius: 10px; background: #fff4d6; color: #5b4200; font: 500 13px/1.45 system-ui, sans-serif; }

/* ===================================================================== Hilfsklassen */
.rs-hide-d { } .rs-hide-t { } .rs-hide-m { }
@media (min-width: 1200px) { .rs-hide-d { display: none !important; } }
@media (min-width: 768px) and (max-width: 1199px) { .rs-hide-t { display: none !important; } }
@media (max-width: 767px) { .rs-hide-m { display: none !important; } }

/* Kein horizontales Überlaufen – Sicherheitsnetz */
.rs-w { max-width: 100%; }

@media print {
	[data-rs-reveal], [data-rs-item] { opacity: 1 !important; transform: none !important; }
	.rs-signature .rs-signature__strokes path { stroke-dashoffset: 0 !important; animation: none !important; }
}

/* ===================================================================== Abschnitts-Helfer für Elementor-Container
 * Vom Setup-Assistenten gesetzt (Container → Erweitert → CSS-Klassen) und frei nutzbar:
 *   rs-sec          Standard-Abschnittsabstand (fließend 56–120 px)
 *   rs-sec--tight   halber Abstand     rs-sec--flush  kein Abstand (volle Breite: auch ohne Seitenrand)
 *   rs-sec--top-header  erster Abschnitt ohne Hero   rs-sticky-col  mitlaufende Spalte (Desktop)
 *   rs-bg-paper | rs-bg-stone | rs-bg-surface | rs-bg-dark (setzt auch .rs-on-dark-Farben)
 */
.e-con.rs-sec, .rs-sec { --padding-top: var(--rs-section); --padding-bottom: var(--rs-section); padding-block: var(--rs-section); }
.e-con.rs-sec--tight, .rs-sec--tight { --padding-top: calc(var(--rs-section) * .5); --padding-bottom: calc(var(--rs-section) * .5); padding-block: calc(var(--rs-section) * .5); }
.e-con.rs-sec--flush, .rs-sec--flush { --padding-top: 0px; --padding-bottom: 0px; padding-block: 0; }
.e-con.rs-sec--top0 { --padding-top: 0px; padding-top: 0; }
/* Erster Abschnitt einer Seite ohne Hero (direkt unter dem Kopfbereich): etwas weniger Luft oben. */
.e-con.rs-sec--top-header { --padding-top: clamp(40px, 5.5vw, 96px); padding-top: clamp(40px, 5.5vw, 96px); }
/* Volle Breite ohne Rand (Bild-Hero): Elementors Standard-Innenabstand von 10 px entfernen. */
.e-con.rs-sec--flush.e-con-full:not(.rs-gutter) { --padding-left: 0px; --padding-right: 0px; padding-inline: 0; }
/* Gleichfarbige Folgeabschnitte rücken zusammen (kein doppelter Abstand). */
.e-con.rs-sec:not([class*="rs-bg-"]) + .e-con.rs-sec:not([class*="rs-bg-"]):not(.rs-sec--flush),
.e-con.rs-sec.rs-bg-stone + .e-con.rs-sec.rs-bg-stone,
.e-con.rs-sec.rs-bg-surface + .e-con.rs-sec.rs-bg-surface,
.e-con.rs-sec.rs-bg-dark + .e-con.rs-sec.rs-bg-dark { --padding-top: calc(var(--rs-section) * .25); padding-top: calc(var(--rs-section) * .25); }

.rs-bg-paper { background-color: var(--rs-c-paper); }
.rs-bg-stone { background-color: var(--rs-c-stone); }
.rs-bg-surface { background-color: var(--rs-c-surface); }
.rs-bg-dark { background-color: var(--rs-c-dark); color: var(--rs-c-on-dark); --rs-c-ink: var(--rs-c-on-dark); --rs-c-ink-soft: var(--rs-c-on-dark); --rs-c-muted: var(--rs-c-on-dark-muted); --rs-c-line: rgb(255 255 255 / .16); }
.e-con.rs-gutter { --padding-left: var(--rs-gutter); --padding-right: var(--rs-gutter); }
/* Spalte bleibt beim Scrollen stehen (Desktop), z. B. Kontaktkarte neben einem langen Formular. */
@media (min-width: 1200px) { .e-con.rs-sticky-col { position: sticky; top: calc(var(--rs-header-h, 84px) + 32px); align-self: flex-start; } }
