/*!
 * Rootsektor IT-Security GmbH – style.css
 * ---------------------------------------------------------------------------
 * The one and only stylesheet of www.rootsektor.de (no build step, no @import,
 * no external resources except the self-hosted fonts and images below).
 *
 * Binding contract: spec/03-component-contract.md (class names, hooks, tokens,
 * section order § 9.2). Values come from analysis/01–08 (tested code), with the
 * reconciliation of analysis/08 (B-1 … B-24, C-1 … C-87).
 *
 * Conventions
 *   - rem = 16 px (browser default), body text = 17 px (1.0625rem).
 *   - Component classes are rs-BEM (rs-block__element--modifier); the header
 *     family (.site-top, .topbar, .site-header, .nav, .mega, .mnav) keeps the
 *     tested names of analysis/02 without prefix.
 *   - State classes (js/no-js, is-open, is-active, …) and data attributes are
 *     set by main.js (implementer C) or server-side (implementer A).
 *   - Media queries use the literal breakpoints of contract § 1.3
 *     (75em/74.99em nav, 1024, 1023, 768, 767, 600, 560, 480 px).
 *   - Colours only through tokens. Primary Blue is never small text on light
 *     backgrounds (2.44:1) – use --rs-secondary-ink (5.58:1).
 *   - Red (danger) only for emergency UI (alarm button, .rs-btn--danger,
 *     hotline box, emergency badge, emergency CTA card, emergency form accent).
 *
 * Sections (contract § 9.2)
 *   01 Tokens · 02 Fonts · 03 Base · 04 Layout · 05 Context · 06 Motion
 *   07 Utilities & Icons · 08 Header & Navigation · 09 Breadcrumb
 *   10 Shapes, tones, backgrounds · 11 Typography components
 *   12 Buttons & links · 13 Lists & data · 14 Cards & tiles · 15 Media
 *   16 Disclosure · 17 Forms · 18 Wizard & tools · 19 Overlays · 20 Footer
 *   21 Heroes & section shells · 22 Page modules · 23 Behaviour layer
 *   24 Print · 25 Reduced motion
 * ------------------------------------------------------------------------- */

/* ===== 01 Tokens ===== */
/* 01 § 11 (canonical) + contract § 1.6 additions/replacements + 08 B-2 aliases.
   Order: 01 block → additions → aliases → media-query overrides. */
:root {
  color-scheme: light;

  /* ── Brand palette (client brief, Farbpalette.txt) ─────────────── */
  --rs-primary: #68AED6;            /* Primary Blue – fills, accents on dark, icons */
  --rs-secondary: #3F83A8;          /* Secondary Blue – borders, graphics, large text on light */
  --rs-charcoal: #1F2327;           /* Charcoal – dark sections, header, navigation */
  --rs-grey: #F5F5F5;               /* Light Grey – section backgrounds */
  --rs-white: #FFFFFF;
  --rs-light: var(--rs-grey);

  /* RGB channels for alpha mixing: rgb(var(--rs-primary-rgb) / .15) */
  --rs-primary-rgb: 104 174 214;
  --rs-secondary-rgb: 63 131 168;
  --rs-charcoal-rgb: 31 35 39;
  --rs-deep-rgb: 25 28 31;
  --rs-muted-rgb: 100 107 113;
  --rs-white-rgb: 255 255 255;
  --rs-black-rgb: 0 0 0;

  /* ── Blue scale ───────────────────────────────────────────────── */
  --rs-primary-25: #F3F8FC;         /* row hover on white */
  --rs-primary-50: #EAF4FA;         /* soft icon tile, light badge */
  --rs-primary-100: #CAE3F1;        /* soft tile border */
  --rs-primary-200: #9FCBE5;        /* accent text hover on dark (9.15:1) */
  --rs-primary-300: #87BEDE;        /* primary fill hover (ink 9.00:1) */
  --rs-primary-pressed: #57A5D1;    /* primary :active (ink 6.64:1) */
  --rs-secondary-ink: #356E8D;      /* TEXT-SAFE BLUE: small text/links on light (5.58:1) */
  --rs-secondary-700: #2A576F;      /* icons in soft tiles, FAQ border (6.99:1 on #EAF4FA) */
  --rs-secondary-800: #244B60;      /* link hover on light (9.33:1) */
  --rs-on-primary: #10171C;         /* ink on Primary (7.42:1) – never white on Primary */

  /* ── Charcoal scale ───────────────────────────────────────────── */
  --rs-charcoal-950: #111416;       /* video background, darkest */
  --rs-charcoal-900: #191C1F;       /* "deep": split hero, process, CTA panel, mega side column */
  --rs-charcoal-850: #1D2125;       /* top bar, compact sticky bar */
  --rs-charcoal-800: var(--rs-charcoal);
  --rs-charcoal-700: #2A2F34;       /* dark cards, form card */
  --rs-charcoal-650: #30363B;       /* dark card hover */
  --rs-charcoal-600: #33393F;       /* dark input */
  --rs-charcoal-550: #383F45;       /* dark input focus */
  --rs-charcoal-500: #3D464E;       /* subtle dark border – DO NOT override (C-16) */
  --rs-line-dark: #464C52;          /* dark card border */
  --rs-charcoal-400: #6C777B;       /* neutral outline button border (3.44:1) */
  --rs-charcoal-350: #7A848B;       /* input border on dark (3.54:1) */

  /* ── Light neutrals ───────────────────────────────────────────── */
  --rs-grey-50: #FAFAFA;
  --rs-grey-100: var(--rs-grey);
  --rs-grey-200: #EDEDED;           /* vulnerability card, FAQ hover */
  --rs-grey-300: #E3E7EA;           /* menu borders, separators */
  --rs-grey-400: #D9DEE2;           /* light card borders */
  --rs-grey-450: #CED4D9;           /* light button border */
  --rs-grey-600: #868F96;           /* light input border (3.29:1) */

  /* ── Text ─────────────────────────────────────────────────────── */
  --rs-text: var(--rs-charcoal);    /* 15.81:1 on white */
  --rs-text-soft: #40474B;          /* 9.46:1 */
  --rs-text-muted: #646B71;         /* 5.41:1 on white, 4.96:1 on #F5F5F5 */
  --rs-text-on-dark: #FFFFFF;
  --rs-text-on-dark-strong: #E5E8EA;
  --rs-text-on-dark-soft: #D0D5D8;
  --rs-text-on-dark-body: #C9CED2;  /* 9.97:1 on charcoal */
  --rs-text-on-dark-subtle: #AEB4B7;
  --rs-text-on-dark-muted: #9AA1A6; /* 6.04:1 on charcoal, 5.16:1 on #2A2F34 */
  --rs-placeholder-dark: #A3AAAF;   /* 4.97:1 on #33393F */
  --rs-text-legal: #9FA7AC;

  /* ── Lines & alphas ───────────────────────────────────────────── */
  --rs-border-light: rgb(var(--rs-muted-rgb) / .28);
  --rs-border-light-soft: rgb(var(--rs-muted-rgb) / .24);
  --rs-rule-light: rgb(var(--rs-black-rgb) / .1);
  --rs-white-a05: rgb(var(--rs-white-rgb) / .05);
  --rs-white-a07: rgb(var(--rs-white-rgb) / .07);
  --rs-white-a08: rgb(var(--rs-white-rgb) / .08);
  --rs-white-a11: rgb(var(--rs-white-rgb) / .11);
  --rs-white-a12: rgb(var(--rs-white-rgb) / .12);
  --rs-white-a13: rgb(var(--rs-white-rgb) / .13);
  --rs-white-a14: rgb(var(--rs-white-rgb) / .14);
  --rs-white-a15: rgb(var(--rs-white-rgb) / .15);
  --rs-white-a55: rgb(var(--rs-white-rgb) / .55);
  --rs-white-a78: rgb(var(--rs-white-rgb) / .78);
  --rs-primary-a06: rgb(var(--rs-primary-rgb) / .06);
  --rs-primary-a08: rgb(var(--rs-primary-rgb) / .08);
  --rs-primary-a10: rgb(var(--rs-primary-rgb) / .10);
  --rs-primary-a12: rgb(var(--rs-primary-rgb) / .12);
  --rs-primary-a13: rgb(var(--rs-primary-rgb) / .13);
  --rs-primary-a14: rgb(var(--rs-primary-rgb) / .14);
  --rs-primary-a15: rgb(var(--rs-primary-rgb) / .15);
  --rs-primary-a16: rgb(var(--rs-primary-rgb) / .16);
  --rs-primary-a18: rgb(var(--rs-primary-rgb) / .18);
  --rs-primary-a20: rgb(var(--rs-primary-rgb) / .20);
  --rs-primary-a22: rgb(var(--rs-primary-rgb) / .22);
  --rs-primary-a24: rgb(var(--rs-primary-rgb) / .24);
  --rs-primary-a30: rgb(var(--rs-primary-rgb) / .30);
  --rs-primary-a32: rgb(var(--rs-primary-rgb) / .32);
  --rs-primary-a35: rgb(var(--rs-primary-rgb) / .35);
  --rs-primary-a36: rgb(var(--rs-primary-rgb) / .36);
  --rs-primary-a38: rgb(var(--rs-primary-rgb) / .38);
  --rs-primary-a40: rgb(var(--rs-primary-rgb) / .40);
  --rs-primary-a45: rgb(var(--rs-primary-rgb) / .45);
  --rs-primary-a48: rgb(var(--rs-primary-rgb) / .48);
  --rs-primary-a55: rgb(var(--rs-primary-rgb) / .55);
  --rs-secondary-a40: rgb(var(--rs-secondary-rgb) / .40);
  --rs-white-a30: rgb(var(--rs-white-rgb) / .30);   /* language switch separator (contract § 4.2) */

  /* ── Status ───────────────────────────────────────────────────── */
  --rs-success: #2E7D32;            --rs-success-on-dark: #81C995;
  --rs-warning: #B45309;            --rs-warning-on-dark: #F5C26B;
  --rs-star: #F6B500;

  /* ── Context (light default; .rs-on-dark and dark components override, section 05) ── */
  --rs-ctx-bg: var(--rs-white);
  --rs-ctx-text: var(--rs-text);
  --rs-ctx-text-soft: var(--rs-text-soft);
  --rs-ctx-text-muted: var(--rs-text-muted);
  --rs-ctx-heading: var(--rs-text);
  --rs-ctx-accent: var(--rs-secondary-ink);
  --rs-ctx-accent-hover: var(--rs-secondary-800);
  --rs-ctx-link: var(--rs-secondary-ink);
  --rs-ctx-link-hover: var(--rs-secondary-800);
  --rs-ctx-border: var(--rs-grey-400);
  --rs-ctx-rule: var(--rs-rule-light);
  --rs-ctx-rule-accent: var(--rs-secondary-a40);
  --rs-ctx-dot-bg: var(--rs-secondary-ink);
  --rs-ctx-dot-fg: var(--rs-white);
  --rs-ctx-dot-halo: none;
  --rs-ctx-quote-bg: var(--rs-grey);
  --rs-focus: var(--rs-secondary-ink);

  /* form controls (light defaults; dark values in section 05) */
  --rs-input-bg: var(--rs-white);
  --rs-input-bg-focus: var(--rs-white);
  --rs-input-fg: var(--rs-text);
  --rs-input-border: var(--rs-grey-600);         /* 3.29:1 – WCAG 1.4.11 */
  --rs-input-placeholder: var(--rs-text-muted);  /* 5.41:1 */
  --rs-label-c: var(--rs-text);
  --rs-error-c: var(--rs-danger);
  --rs-success-c: var(--rs-success);

  /* ── Typography ───────────────────────────────────────────────── */
  --rs-font: "Lato", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --rs-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  --rs-fw-regular: 400;
  --rs-fw-bold: 700;
  --rs-fw-black: 900;

  --rs-fs-display: clamp(1.5625rem, 0.9606rem + 2.4691vw, 2.8125rem); /* 25 → 45px */
  --rs-fs-tagline: clamp(1.25rem, 0.8889rem + 1.4815vw, 2rem);        /* 20 → 32px */
  --rs-fs-h1: clamp(2rem, 1.3333rem + 1.3889vw, 2.375rem);            /* 32 → 38px */
  --rs-fs-h2: clamp(1.5rem, 0.6111rem + 1.8519vw, 2rem);              /* 24 → 32px */
  --rs-fs-h3: clamp(1.25rem, 0.8056rem + 0.9259vw, 1.5rem);           /* 20 → 24px */
  --rs-fs-h4: clamp(1.125rem, 0.6806rem + 0.9259vw, 1.375rem);        /* 18 → 22px */
  --rs-fs-h5: clamp(1rem, 0.7778rem + 0.463vw, 1.125rem);             /* 16 → 18px */
  --rs-fs-h6: 0.9375rem;                                               /* 15px */
  --rs-fs-hero-lead: clamp(1.125rem, 1.0648rem + 0.2469vw, 1.25rem);  /* 18 → 20px */
  --rs-fs-summary: clamp(1.0625rem, 1.8vw, 1.25rem);                  /* 17 → 20px */
  --rs-fs-stat: clamp(1.5rem, 3vw, 2rem);                             /* 24 → 32px */
  --rs-fs-lg: 1.25rem;            /* 20px */
  --rs-fs-card-title: 1.25rem;    /* 20px */
  --rs-fs-lead: 1.125rem;         /* 18px */
  --rs-fs-intro: 1.0625rem;       /* 17px */
  --rs-fs-body: 1.0625rem;        /* 17px */
  --rs-fs-btn: 1rem;              /* 16px */
  --rs-fs-ui: 0.9375rem;          /* 15px */
  --rs-fs-small: 0.875rem;        /* 14px */
  --rs-fs-meta: 0.8125rem;        /* 13px */
  --rs-fs-label: 0.75rem;         /* 12px */
  --rs-fs-micro: 0.6875rem;       /* 11px – minimum on the RS site */

  --rs-lh-display: 1.1;
  --rs-lh-heading: 1.2;
  --rs-lh-snug: 1.3;
  --rs-lh-h4: 1.4;
  --rs-lh-ui: 1.45;
  --rs-lh-body: 1.6;
  --rs-lh-copy: 1.65;
  --rs-lh-relaxed: 1.7;
  --rs-lh-footer: 1.75;

  --rs-ls-tagline: 3px;
  --rs-ls-eyebrow: 0.16em;
  --rs-ls-label: 0.14em;
  --rs-ls-kicker: 0.12em;
  --rs-ls-badge: 0.06em;
  --rs-ls-caps: 0.05em;
  --rs-ls-tight: -0.02em;
  --rs-ls-display: -0.035em;

  /* ── Spacing ──────────────────────────────────────────────────── */
  --rs-space-1: 0.25rem;
  --rs-space-2: 0.5rem;
  --rs-space-3: 0.75rem;
  --rs-space-4: 1rem;
  --rs-space-5: 1.25rem;
  --rs-space-6: 1.5rem;
  --rs-space-7: 1.75rem;
  --rs-space-8: 2rem;
  --rs-space-10: 2.5rem;
  --rs-space-11: 2.75rem;
  --rs-space-12: 3rem;
  --rs-space-14: 3.5rem;
  --rs-space-16: 4rem;
  --rs-space-20: 5rem;
  --rs-space-24: 6rem;
  --rs-space-28: 7rem;

  --rs-section-pad-y: 7rem;          /* section rhythm: 7rem → 6rem (≤1024) → 4rem (≤767) */
  --rs-section-pad-x: 40px;          /* 40px → 30px → 20px */
  --rs-section-y: clamp(4rem, 2.5556rem + 5.9259vw, 7rem);          /* fluid 64 → 112px */
  --rs-module-pad: clamp(3.5rem, 7vw, 6rem) 1.5rem;                 /* .sector-* */
  --rs-gutter: clamp(1rem, 0.2778rem + 2.963vw, 2.5rem);            /* 16 → 40px */
  --rs-gap-xs: 0.75rem;
  --rs-gap-sm: 1rem;
  --rs-gap: 1.25rem;
  --rs-gap-lg: 1.5rem;
  --rs-gap-split: clamp(2.5rem, 5vw, 4rem);
  --rs-gap-split-fluid: clamp(2rem, 6vw, 5rem);
  --rs-gap-split-xl: 5rem;

  /* ── Containers (01) ──────────────────────────────────────────── */
  --rs-container: 1200px;
  --rs-container-wide: 1240px;
  --rs-container-module: 1180px;
  --rs-container-cta: 880px;
  --rs-container-trust: 780px;
  --rs-container-narrow: 760px;
  --rs-measure: 46rem;

  /* ── Radii ────────────────────────────────────────────────────── */
  --rs-radius-xs: 5px;
  --rs-radius-sm: 6px;
  --rs-radius-7: 7px;
  --rs-radius-md: 8px;
  --rs-radius-9: 9px;
  --rs-radius-lg: 10px;
  --rs-radius-icon: 11px;
  --rs-radius-xl: 12px;
  --rs-radius-2xl: 14px;
  --rs-radius-notch: 15px;
  --rs-radius-3xl: 18px;
  --rs-radius-pill: 999px;

  /* ── Shadows ──────────────────────────────────────────────────── */
  --rs-shadow-xs: 0 2px 5px rgb(var(--rs-black-rgb) / .1);
  --rs-shadow-notch: 5px 5px 10px 0 rgb(var(--rs-black-rgb) / .1);
  --rs-shadow-card: 0 8px 24px rgb(var(--rs-charcoal-rgb) / .07);
  --rs-shadow-card-hover: 0 14px 32px rgb(var(--rs-charcoal-rgb) / .13);
  --rs-shadow-card-faint: 0 8px 24px rgb(var(--rs-charcoal-rgb) / .04);
  --rs-shadow-card-soft: 0 12px 30px rgb(var(--rs-charcoal-rgb) / .06);
  --rs-shadow-dark: 0 12px 30px rgb(var(--rs-black-rgb) / .18);
  --rs-shadow-dark-hover: 0 22px 46px rgb(var(--rs-black-rgb) / .3);
  --rs-shadow-dark-focus: 0 18px 42px rgb(var(--rs-black-rgb) / .25), 0 0 0 3px var(--rs-primary-a24);
  --rs-shadow-dark-soft: 0 12px 28px rgb(var(--rs-charcoal-rgb) / .18);
  --rs-shadow-highlight: 0 14px 30px rgb(var(--rs-charcoal-rgb) / .2);
  --rs-shadow-lifted: 0 14px 34px rgb(var(--rs-black-rgb) / .2);
  --rs-shadow-trust: 0 16px 34px rgb(var(--rs-black-rgb) / .22);
  --rs-shadow-panel: 0 18px 42px rgb(var(--rs-black-rgb) / .38);
  --rs-shadow-embed: 0 18px 42px rgb(var(--rs-black-rgb) / .28);
  --rs-shadow-cta: 0 20px 46px rgb(var(--rs-black-rgb) / .32);
  --rs-shadow-video: 0 24px 60px rgb(var(--rs-black-rgb) / .4);
  --rs-shadow-portal: 0 24px 60px -28px rgb(var(--rs-black-rgb) / .28);
  --rs-shadow-megamenu: 0 24px 65px rgb(var(--rs-deep-rgb) / .18);
  --rs-shadow-overlay: 0 2px 4px rgb(var(--rs-black-rgb) / .06), 0 8px 16px rgb(var(--rs-black-rgb) / .1);
  --rs-shadow-btn: 0 6px 18px var(--rs-primary-a20);
  --rs-shadow-btn-sm: 0 4px 12px var(--rs-primary-a16);
  --rs-halo: 0 0 0 5px var(--rs-primary-a12);
  --rs-ring: 0 0 0 3px var(--rs-primary-a38);
  --rs-ring-input: 0 0 0 3px var(--rs-primary-a35);
  --rs-ring-on-dark: 0 0 0 3px var(--rs-white-a55);

  /* ── Motion ───────────────────────────────────────────────────── */
  --rs-dur-instant: 100ms;          /* link/button colour */
  --rs-dur-fast: 140ms;             /* mega-menu items, tabs */
  --rs-dur-form: 150ms;             /* inputs, submit, buttons */
  --rs-dur-btn: 160ms;
  --rs-dur-card: 180ms;             /* cards, footer links, round arrow */
  --rs-dur-base: 200ms;             /* TOC, sub-menus, drawer */
  --rs-dur-accordion: 250ms;
  --rs-dur-overlay: 300ms;          /* mega-menu fadeInDown */
  --rs-dur-slow: 500ms;
  --rs-dur-slower: 600ms;
  --rs-ease: ease;
  --rs-ease-in-out: ease-in-out;
  --rs-ease-slide: cubic-bezier(.16, .68, .43, .99);
  --rs-ease-swing: cubic-bezier(.37, 0, .63, 1);   /* ≈ jQuery "swing" */

  /* ── Z-index (01; page-level layers below in the contract block) ── */
  --rs-z-below: -1;
  --rs-z-base: 1;
  --rs-z-raised: 2;
  --rs-z-overlap: 3;
  --rs-z-header-wrap: 10;
  --rs-z-dropdown: 100;
  --rs-z-topbar: 1100;
  --rs-z-megamenu: 1200;
  --rs-z-mobile-nav: 1300;

  /* viewport width without scrollbar – main.js overwrites with clientWidth (02) */
  --vw: 100vw;

  /* ── Danger (spec/02, ONLY for emergency elements) ─────────────── */
  --rs-danger: #C62828;             /* white on it 5.62:1 */
  --rs-danger-hover: #B71C1C;       /* white on it 6.6:1 */
  --rs-danger-pressed: #A31515;
  --rs-danger-soft: rgb(198 40 40 / .12);
  --rs-danger-border: rgb(198 40 40 / .45);
  --rs-danger-on-dark: #F28B82;     /* red text on charcoal */
  --rs-on-danger: #FFFFFF;
  --rs-danger-focus: #FFFFFF;       /* light focus ring: 3px white + 5px charcoal halo */
  --rs-danger-rgb: 198 40 40;
  /* spec/02 names as aliases (check scripts look for them) */
  --c-danger: var(--rs-danger);
  --c-danger-hover: var(--rs-danger-hover);
  --c-danger-soft: var(--rs-danger-soft);

  /* ── 08 B-2 additions ─────────────────────────────────────────── */
  --rs-warning-rgb: 180 83 9;
  --rs-dur-faq: 400ms;
  --rs-dur-reveal: 600ms;
  --rs-delay-zoom: 200ms;
  --rs-ease-out: cubic-bezier(.2, .7, .2, 1);
  --rs-ease-tooltip: cubic-bezier(.64, .09, .08, 1);
  --rs-ease-material: cubic-bezier(.4, 0, .2, 1);
  --rs-shift: 1rem;

  /* ── Layout (replaces 01 values) ──────────────────────────────── */
  --rs-topbar-h: 3.625rem;          /* start value; main.js writes the measured value (0 ≤ 768 px) */
  --rs-stuck-h: 0px;                /* height of the compact sticky bar, see overrides */
  --rs-header-h: 112px;             /* desktop header row (design preview); < 1200 px: 68 px */
  --rs-scroll-offset: calc(var(--rs-topbar-h) + var(--rs-stuck-h) + 1.5rem);
  --rs-logo-h: clamp(32px, calc(2.5vw + 2px), 44px);
  --rs-logo-h-compact: clamp(28px, 7.2vw, 36px);
  --rs-hero-pt: 13em;

  /* ── Z-index (contract § 1.5) ─────────────────────────────────── */
  --rs-z-backtotop: 900;
  --rs-z-consent: 990;
  --rs-z-langhint: 995;
  --rs-z-header: 1000;
  --rs-z-toast: 1250;
  --rs-z-skip: 10000;

  /* ── Wedge / tone colours (shapes, contract § 1.10) ───────────── */
  --rs-tone-white: var(--rs-white);
  --rs-tone-grey: var(--rs-grey);
  --rs-tone-dark: var(--rs-charcoal);
  --rs-tone-deep: var(--rs-charcoal-900);
}

/* Aliases (08 B-2) – code ported from analysis 02 (header) and 06 (behaviours)
   runs unchanged on the 01 token set. */
:root {
  --rs-blue: var(--rs-primary);
  --rs-blue-2: var(--rs-secondary);
  --rs-blue-hover: var(--rs-primary-300);
  --rs-blue-tint: var(--rs-primary-50);
  --rs-line: var(--rs-grey-300);
  --rs-muted: var(--rs-text-muted);
  --rs-on-dark-1: #EDF1F4;          /* header/mega/drawer text tones = design preview values */
  --rs-on-dark-2: var(--rs-text-on-dark-soft);
  --rs-on-dark-3: #C6CDD3;
  --rs-on-dark-4: #AEB6BD;
  --rs-on-dark-5: #98A1A8;
  --rs-panel-shadow: var(--rs-shadow-megamenu);
  --rs-dur-drawer: var(--rs-dur-base);
  --rs-ease-drawer: var(--rs-ease-slide);
  --rs-dur-link: var(--rs-dur-instant);
  --rs-dur-menu: var(--rs-dur-fast);
  --rs-dur-field: var(--rs-dur-form);
  --rs-dur-button: var(--rs-dur-btn);
  --rs-dur-ui: var(--rs-dur-base);
  --rs-dur-zoom: var(--rs-dur-slow);
  --rs-ease-offside: var(--rs-ease-slide);
  --rs-hover-light: var(--rs-primary-25);
  --rs-soft: var(--rs-primary-50);
  --rs-error-on-dark: var(--rs-danger-on-dark);
  --rs-error-on-light: var(--rs-danger);
}

/* Media-query overrides (contract § 1.6 – the 01 § 11 overrides are dropped) */
@media (max-width: 74.99em) { :root { --rs-hero-pt: 10em; --rs-stuck-h: 68px; --rs-header-h: 68px; } }   /* no top bar, compact 68 px header row */
@media (max-width: 1024px)  { :root { --rs-section-pad-y: 6rem; --rs-section-pad-x: 30px; } }
@media (max-width: 768px)   { :root { --rs-topbar-h: 0px; --rs-hero-pt: 10em; --rs-module-pad: 3.5rem 1.1rem; } }
@media (max-width: 767px)   { :root { --rs-section-pad-y: 4rem; --rs-section-pad-x: 20px; } }

/* ===== 02 Fonts ===== */
/* Self-hosted Lato (SIL OFL 1.1, assets/fonts/LICENSE-Lato-OFL.txt), 08 B-3.
   400 / 400 italic / 700 / 900, latin + latin-ext (latin-ext loads on demand via
   unicode-range). Bold italic is not loaded – avoid <strong><em>.
   Preloads (layout.php): latin 400, 700, 900. */
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/lato-latin-400-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/lato-latin-ext-400-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Lato";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/lato-latin-400-italic.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Lato";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/lato-latin-ext-400-italic.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/lato-latin-700-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/lato-latin-ext-700-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("../fonts/lato-latin-900-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("../fonts/lato-latin-ext-900-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ===== 03 Base ===== */
/* Element defaults (01 § 4.5/§ 5, C-25 list margins),
   running-text links (01 § 9.2), global focus fallback (06 block 1). */
*,
*::before,
*::after { box-sizing: border-box; }

html {
  font-size: 100%;                       /* 1rem = 16px, as on the reference */
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-top: var(--rs-scroll-offset);   /* anchors land below the fixed bars */
  -webkit-tap-highlight-color: transparent;
}

body {
  margin: 0;
  background-color: var(--rs-white);
  color: var(--rs-text);
  font-family: var(--rs-font);
  font-size: var(--rs-fs-body);
  font-weight: var(--rs-fw-regular);
  line-height: var(--rs-lh-body);
  overflow-wrap: break-word;             /* long German compounds/URLs never force a horizontal scrollbar */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* the hidden attribute always wins (JS toggles it; no-JS fallbacks override with !important) */
[hidden] { display: none !important; }

/* <main tabindex="-1"> receives focus from the skip link – no outline around the whole page */
main[tabindex="-1"]:focus { outline: none; }

/* headings */
h1, h2, h3, h4, h5, h6 {
  margin: 0 0 1.25rem;
  color: var(--rs-ctx-heading);
  font-family: inherit;
  overflow-wrap: break-word;
  hyphens: auto;                         /* <html lang="de|en"> drives the hyphenation dictionary */
}
h1 { font-size: var(--rs-fs-h1); font-weight: var(--rs-fw-black); line-height: var(--rs-lh-heading); }
h2 { font-size: var(--rs-fs-h2); font-weight: var(--rs-fw-black); line-height: var(--rs-lh-snug); }
h3 { font-size: var(--rs-fs-h3); font-weight: var(--rs-fw-regular); line-height: var(--rs-lh-snug); }  /* reference: 500 → renders 400 */
h4 { font-size: var(--rs-fs-h4); font-weight: var(--rs-fw-black); line-height: var(--rs-lh-h4); }
h5 { font-size: var(--rs-fs-h5); font-weight: var(--rs-fw-black); line-height: var(--rs-lh-body); }
h6 { font-size: var(--rs-fs-h6); font-weight: var(--rs-fw-regular); line-height: var(--rs-lh-body); }

/* block spacing (GP: p 0 0 1.5em) */
p, dl, address, figure, blockquote, pre, table { margin: 0 0 1.5em; }
/* GP list model (C-25): margin 0 0 1.5em 3em, padding 0; nested lists 1.5em.
   Every component list resets this explicitly. */
ul, ol { margin: 0 0 1.5em 3em; padding: 0; }
li > ul, li > ol { margin: 0 0 0 1.5em; }
dd { margin: 0; }

strong, b { font-weight: var(--rs-fw-bold); }
em, i { font-style: italic; }            /* real Lato italic (400) is loaded */
small { font-size: var(--rs-fs-meta); }
address { font-style: normal; }
sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
sup { top: -.5em; }
sub { bottom: -.25em; }

img, svg, video, canvas { max-width: 100%; height: auto; }
img, video, canvas { display: block; }
svg { flex-shrink: 0; }
iframe { border: 0; }

button, input, select, textarea { margin: 0; font: inherit; color: inherit; letter-spacing: inherit; }
button { cursor: pointer; }
button:disabled { cursor: not-allowed; }
fieldset { min-width: 0; }
summary { cursor: pointer; }

code, kbd, samp, pre { font-family: var(--rs-font-mono); font-size: .92em; }
code { padding: .1em .3em; border-radius: 4px; background: rgb(var(--rs-charcoal-rgb) / .07); }
pre { overflow-x: auto; padding: 1rem 1.25rem; border-radius: var(--rs-radius-sm); background: var(--rs-charcoal-950); color: var(--rs-text-on-dark-strong); line-height: 1.55; }
pre code { padding: 0; border-radius: 0; background: none; color: inherit; font-size: inherit; }
kbd { padding: .1em .35em; border: 1px solid var(--rs-grey-450); border-radius: 4px; background: var(--rs-grey); }
mark { padding: 0 .1em; border-radius: 2px; background: var(--rs-primary-a35); color: inherit; }

hr { height: 1px; margin: 2.5rem 0; border: 0; background: var(--rs-ctx-rule); }

::selection { background: var(--rs-primary-a35); }

/* links (01 § 9.2): colour from the context (#356E8D on light, #68AED6 on dark) */
a {
  color: var(--rs-ctx-link);
  text-decoration: none;
  transition: color var(--rs-dur-instant) ease-in-out, background-color var(--rs-dur-instant) ease-in-out, text-decoration-color var(--rs-dur-instant) ease-in-out;
}
a:hover { color: var(--rs-ctx-link-hover); }

/* links inside running text must not rely on colour alone (WCAG 1.4.1).
   Specificity (0,1,1) – component rules such as ".rs-breadcrumb a" (later in
   this file) override it. */
:where(.rs-prose) a:not([class]),
:where(p, li, dd, td, th, figcaption, address) > a:not([class]) {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: .2em;
  text-decoration-color: var(--rs-primary-a55);
}
:where(.rs-prose) a:not([class]):hover,
:where(p, li, dd, td, th, figcaption, address) > a:not([class]):hover { text-decoration-color: currentColor; }

/* focus: zero-specificity fallback (06); component rules refine it.
   --rs-focus = #356E8D on light (5.58:1), #68AED6 on dark (6.49:1). */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--rs-focus);
  outline-offset: 3px;
}
a:focus-visible { outline-width: 2px; border-radius: 2px; }
[tabindex="-1"]:focus:not(:focus-visible) { outline: none; }

/* GP parity: colour/background transitions on links, buttons, inputs */
:where(button, input) {
  transition: color var(--rs-dur-instant) ease-in-out, background-color var(--rs-dur-instant) ease-in-out;
}


/* page shell (layout.php: body.rs-page > .site-top, main, footer …): short pages such as 404 or
   "Danke" keep the footer at the bottom of the viewport */
.rs-page { display: flex; flex-direction: column; min-height: 100vh; min-height: 100dvh; }
.rs-page > main { flex: 1 0 auto; }
/* ===== 04 Layout ===== */
/* Containers, generic sections and grids (01 § 5.6, 08 B-10). The horizontal
   space always comes from the container gutter (≥ 16 px). */
.rs-container {
  width: 100%;
  max-width: calc(var(--rs-container) + 2 * var(--rs-gutter));
  margin-inline: auto;
  padding-inline: var(--rs-gutter);
}
.rs-container--wide   { max-width: calc(var(--rs-container-wide) + 2 * var(--rs-gutter)); }
.rs-container--module { max-width: calc(var(--rs-container-module) + 2 * var(--rs-gutter)); }
.rs-container--narrow { max-width: calc(var(--rs-container-narrow) + 2 * var(--rs-gutter)); }

/* generic section: 7rem → 6rem (≤ 1024) → 4rem (≤ 767) (01 section rhythm) */
.rs-section { position: relative; padding-block: var(--rs-section-pad-y); }
.rs-section--fluid  { padding-block: var(--rs-section-y); }
.rs-section--module { padding-block: clamp(3.5rem, 7vw, 6rem); }
.rs-section--grey   { background-color: var(--rs-grey); }
.rs-section--dark   { background-color: var(--rs-charcoal); }
.rs-section--deep   { background-color: var(--rs-charcoal-900); }
@media (max-width: 768px) { .rs-section--module { padding-block: 3.5rem; } }

/* grids: 3/4 columns → 2 (≤ 1024) → 1 (≤ 560); 2 columns → 1 (≤ 768) */
.rs-grid {
  --rs-cols: 3;
  display: grid;
  grid-template-columns: repeat(var(--rs-cols), minmax(0, 1fr));
  gap: var(--rs-gap);
}
.rs-grid--2 { --rs-cols: 2; }
.rs-grid--3 { --rs-cols: 3; }
.rs-grid--4 { --rs-cols: 4; }
@media (max-width: 1024px) { .rs-grid--3, .rs-grid--4 { --rs-cols: 2; } }
@media (max-width: 768px)  { .rs-grid--2 { --rs-cols: 1; } }
@media (max-width: 560px)  { .rs-grid--3, .rs-grid--4 { --rs-cols: 1; } }
/* list reset for grids built from <ul>; children stretch to equal heights (B-10) */
.rs-grid--list { margin: 0; padding: 0; list-style: none; }
.rs-grid--list > li { display: flex; min-width: 0; }
.rs-grid--list > li > * { flex: 1 1 auto; min-width: 0; }

/* split layout (hero-like 1.05fr / .95fr, even 50/50) */
.rs-split {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(min(22rem, 100%), .95fr);
  align-items: center;
  gap: var(--rs-gap-split);
}
.rs-split--even { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--rs-gap-split-xl); }
@media (max-width: 1024px) {
  .rs-split { grid-template-columns: minmax(0, 1fr); max-width: var(--rs-container-narrow); margin-inline: auto; }
  .rs-split--even { grid-template-columns: minmax(0, 1fr); gap: 3rem; }
}

/* ===== 05 Context ===== */
/* Colour context (01 context.css + 08 B-2 list + contract § 1.1).
   1) Dark wrappers and dark-surface components switch to the dark context:
      text, headings, accents, borders, focus colour and form-control tokens.
   2) White-surface components reset to the light context, so a white card in a
      dark band (or a dark panel in a light band) always keeps readable text.
   Components read --rs-ctx-* / --rs-input-* and adapt automatically. */
.rs-on-dark,
.rs-section--dark,
.rs-section--deep,
.rs-home-hero,
.rs-hero,
.rs-page-hero,
.rs-split-panels,
.rs-process-section,
.rs-services-band,
.rs-industries,
.rs-related,
.rs-report,
.rs-cta-section,
.rs-cta-band,
.rs-form-band,
.rs-media--box,
.rs-panel,
.rs-service-card,
.rs-industry-card,
.rs-why-card,
.rs-form-card,
.rs-cta-panel,
.rs-video,
.rs-video-box,
.rs-vulns__intro,
.rs-vulns__cta,
.rs-toc,
.rs-term__service,
.rs-consent,
.rs-lang-hint,
.rs-toast,
.topbar,
.site-header,
.nav__drawer,
.mega__aside,
.mega__intro,
.mega__cta,
.rs-footer {
  --rs-ctx-bg: var(--rs-charcoal);
  --rs-ctx-text: var(--rs-text-on-dark-body);
  --rs-ctx-text-soft: var(--rs-text-on-dark-soft);
  --rs-ctx-text-muted: var(--rs-text-on-dark-subtle);
  --rs-ctx-heading: var(--rs-text-on-dark);
  --rs-ctx-accent: var(--rs-primary);
  --rs-ctx-accent-hover: var(--rs-primary-200);
  --rs-ctx-link: var(--rs-primary);
  --rs-ctx-link-hover: var(--rs-primary-200);
  --rs-ctx-border: var(--rs-line-dark);
  --rs-ctx-rule: var(--rs-white-a12);
  --rs-ctx-rule-accent: var(--rs-primary-a40);
  --rs-ctx-dot-bg: var(--rs-primary);
  --rs-ctx-dot-fg: var(--rs-on-primary);
  --rs-ctx-dot-halo: var(--rs-halo);
  --rs-ctx-quote-bg: var(--rs-charcoal-700);
  --rs-input-bg: var(--rs-charcoal-600);
  --rs-input-bg-focus: var(--rs-charcoal-550);
  --rs-input-fg: var(--rs-white);
  --rs-input-border: var(--rs-charcoal-350);          /* 3.54:1 */
  --rs-input-placeholder: var(--rs-placeholder-dark); /* 4.97:1 */
  --rs-label-c: var(--rs-text-on-dark-strong);
  --rs-error-c: var(--rs-danger-on-dark);
  --rs-success-c: var(--rs-success-on-dark);
  --rs-focus: var(--rs-primary);
  color: var(--rs-ctx-text);
}

.rs-on-light,
.rs-split-panels--light,
.rs-process-section--light,
.rs-card,
.rs-card-soft,
.rs-icon-card,
.rs-vuln-card,
.rs-feature-card,
.rs-link-card,
.rs-benefit-card,
.rs-faq__item,
.rs-include--light,
.rs-hotline,
.rs-term__facts,
.rs-wizard,
.rs-choice-card,
.rs-review__section,
.rs-pager__link,
.rs-doc,
.mega {
  --rs-ctx-bg: var(--rs-white);
  --rs-ctx-text: var(--rs-text);
  --rs-ctx-text-soft: var(--rs-text-soft);
  --rs-ctx-text-muted: var(--rs-text-muted);
  --rs-ctx-heading: var(--rs-text);
  --rs-ctx-accent: var(--rs-secondary-ink);
  --rs-ctx-accent-hover: var(--rs-secondary-800);
  --rs-ctx-link: var(--rs-secondary-ink);
  --rs-ctx-link-hover: var(--rs-secondary-800);
  --rs-ctx-border: var(--rs-grey-400);
  --rs-ctx-rule: var(--rs-rule-light);
  --rs-ctx-rule-accent: var(--rs-secondary-a40);
  --rs-ctx-dot-bg: var(--rs-secondary-ink);
  --rs-ctx-dot-fg: var(--rs-white);
  --rs-ctx-dot-halo: none;
  --rs-ctx-quote-bg: var(--rs-grey);
  --rs-input-bg: var(--rs-white);
  --rs-input-bg-focus: var(--rs-white);
  --rs-input-fg: var(--rs-text);
  --rs-input-border: var(--rs-grey-600);
  --rs-input-placeholder: var(--rs-text-muted);
  --rs-label-c: var(--rs-text);
  --rs-error-c: var(--rs-danger);
  --rs-success-c: var(--rs-success);
  --rs-focus: var(--rs-secondary-ink);
  color: var(--rs-ctx-text);
}

/* light form card (B-14) – .rs-form-card is dark by default */
.rs-form-card.rs-form-card--light {
  --rs-ctx-bg: var(--rs-white);
  --rs-ctx-text: var(--rs-text);
  --rs-ctx-text-soft: var(--rs-text-soft);
  --rs-ctx-text-muted: var(--rs-text-muted);
  --rs-ctx-heading: var(--rs-text);
  --rs-ctx-accent: var(--rs-secondary-ink);
  --rs-ctx-accent-hover: var(--rs-secondary-800);
  --rs-ctx-link: var(--rs-secondary-ink);
  --rs-ctx-link-hover: var(--rs-secondary-800);
  --rs-ctx-border: var(--rs-grey-400);
  --rs-ctx-rule: var(--rs-rule-light);
  --rs-ctx-rule-accent: var(--rs-secondary-a40);
  --rs-ctx-dot-bg: var(--rs-secondary-ink);
  --rs-ctx-dot-fg: var(--rs-white);
  --rs-ctx-dot-halo: none;
  --rs-ctx-quote-bg: var(--rs-grey);
  --rs-input-bg: var(--rs-white);
  --rs-input-bg-focus: var(--rs-white);
  --rs-input-fg: var(--rs-text);
  --rs-input-border: var(--rs-grey-600);            /* 3.29:1 */
  --rs-input-placeholder: var(--rs-text-muted);     /* 5.41:1 */
  --rs-label-c: var(--rs-text);
  --rs-error-c: var(--rs-danger);
  --rs-success-c: var(--rs-success);
  --rs-focus: var(--rs-secondary-ink);
  color: var(--rs-text);
}

/* ===== 06 Motion ===== */
/* Keyframes (01 § 8, 08 B-2, contract § 5.1.4). Durations live in the tokens;
   section 25 switches every animation/transition off for reduced motion. */
@keyframes rs-fade-in-down {               /* mega menus, sticky bar, dialog ("fade in down") */
  from { opacity: 0; transform: translateY(calc(-1 * var(--rs-shift))); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes rs-fade-in-up {                 /* consent banner, language hint, toasts */
  from { opacity: 0; transform: translateY(var(--rs-shift)); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes rs-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
@keyframes rs-blink { 0%, 100% { opacity: 0; } 50% { opacity: 1; } }
@keyframes rs-alarm-pulse {                /* pulsing ring of the alarm button dot (design preview) */
  0%   { box-shadow: 0 0 0 2px var(--rs-danger), 0 0 0 2px rgb(255 130 130 / .75); }
  70%  { box-shadow: 0 0 0 2px var(--rs-danger), 0 0 0 11px rgb(255 130 130 / 0); }
  100% { box-shadow: 0 0 0 2px var(--rs-danger), 0 0 0 11px rgb(255 130 130 / 0); }
}

/* ===== 07 Utilities & Icons ===== */
/* screen-reader utility under both names (06-main.js creates .visually-hidden twins) */
.rs-visually-hidden,
.visually-hidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* skip link – revealed with :focus-visible only (C-22; main.js focuses it programmatically) */
.rs-skip-link {
  position: absolute;
  top: -100px;
  left: .5rem;
  z-index: var(--rs-z-skip);
  padding: .875rem 1.4rem;
  border-radius: var(--rs-radius-sm);
  background: var(--rs-white);
  color: var(--rs-charcoal);
  font-weight: var(--rs-fw-bold);
  line-height: 1.2;
  text-decoration: none;
  box-shadow: 0 0 2px 2px rgb(var(--rs-black-rgb) / .6);
}
.rs-skip-link:focus-visible {
  top: .5rem;
  outline: 3px solid var(--rs-secondary-ink);
  outline-offset: 2px;
}

/* sprite icons (contract § 1.7): the Lucide symbols carry no presentation
   attributes – stroke styling comes from here; rs-* symbols set fill/stroke on
   their own paths (wins over inheritance). Size = 1em unless a component sets it. */
.icon,
.rs-icon {
  display: inline-block;
  flex: none;
  width: 1em;
  height: 1em;
  vertical-align: -.125em;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  overflow: visible;
}

/* required marker */
.rs-req { margin-left: .15em; color: inherit; font-weight: var(--rs-fw-bold); }
.rs-req[hidden] { display: none; }

/* no line break right after short prefixes in headings („IT-|Sicherheit“); set by rs_nobreak() */
.rs-nowrap { white-space: nowrap; }

/* ===== 08 Header & Navigation ===== */
/* Client-approved design preview (_vorschau/design-vorschau.html, spec/10 item 2: "perfekt" –
   header, top bar, mega menus, drawer exactly as there) on the contract markup (§ 4.2–4.7).
   States (preview): ≥ 1200 px top bar fixed (58 px) + transparent 112 px header row over the hero
   that scrolls away; < 1200 px no top bar, compact 68 px charcoal header row that always stays
   on top (logo · Notfall · burger) + off-canvas drawer.
   Stacking inside .site-top (own stacking context, z 1000): mega panels 50,
   header row 1050, top bar 1100, backdrop 1150, drawer 1200. */

/* ---------- 8.1 Header group --------------------------------------------- */
.site-top {
  position: absolute;                    /* overlays the dark hero – no layout shift */
  inset: 0 0 auto;
  z-index: var(--rs-z-header);
  font-family: var(--rs-font);
}
:where(.site-top) ul,
:where(.site-top) ol { margin: 0; padding: 0; list-style: none; }
:where(.site-top) p { margin: 0; }

/* ---------- 8.2 Top bar (fixed, ≥ 1200 px) ------------------------------- */
.topbar {
  position: fixed;                       /* stays while the header row scrolls away */
  inset: 0 0 auto;
  z-index: 1100;
  height: 58px;                          /* = --rs-topbar-h (incl. border) */
  padding: 0 var(--rs-gutter);
  border-bottom: 1px solid rgb(var(--rs-primary-rgb) / .32);
  background: var(--rs-charcoal-850);
  color: var(--rs-white);
  transition: box-shadow var(--rs-dur-base) ease;
}
html[data-scrolled] .topbar { box-shadow: 0 6px 18px rgb(var(--rs-black-rgb) / .28); }
.topbar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  max-width: var(--rs-container-wide);   /* 1240 px */
  height: 100%;
  margin: 0 auto;
}
.topbar__actions { display: flex; align-items: center; gap: 1.25rem; margin-left: auto; }
.topbar__contact {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  color: var(--rs-white);
  font-size: .84375rem;                  /* 13.5 px */
  font-weight: var(--rs-fw-bold);
  line-height: 1.25;
  text-decoration: none;
  white-space: nowrap;
}
.topbar__contact .icon { width: 15px; height: 15px; color: var(--rs-primary); stroke-width: 2; }
.topbar__label { color: var(--rs-white); }
.topbar__value { color: var(--rs-primary); transition: color var(--rs-dur-instant) ease; }   /* 6.64:1 on #1D2125 */
.topbar__contact:hover { color: var(--rs-white); }
.topbar__contact:hover .topbar__value { color: var(--rs-primary-300); text-decoration: underline; text-underline-offset: 3px; }
.topbar__cta {                           /* = preview .btn.btn--blue.btn--sm */
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  min-height: 36px;
  padding: .55rem .9rem;
  border: 1px solid var(--rs-primary-300);
  border-radius: var(--rs-radius-xs);
  background: var(--rs-primary);
  box-shadow: 0 4px 12px rgb(var(--rs-primary-rgb) / .16);
  color: var(--rs-on-primary);           /* 7.42:1 (B-5) */
  font-size: var(--rs-fs-meta);          /* 13 px */
  font-weight: var(--rs-fw-black);
  line-height: 1.1;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color var(--rs-dur-form) ease, border-color var(--rs-dur-form) ease, color var(--rs-dur-form) ease;
}
.topbar__cta .icon { width: 1.05em; height: 1.05em; stroke-width: 2.25; transition: transform var(--rs-dur-form) ease; }
.topbar__cta:hover { background: var(--rs-primary-300); color: var(--rs-on-primary); }
.topbar__cta:hover .icon { transform: translateX(3px); }
.topbar__contact:focus-visible,
.topbar__cta:focus-visible { outline: 2px solid var(--rs-white); outline-offset: 3px; }
@media (max-width: 74.99em) {            /* < 1200 px: no top bar (design preview) */
  .topbar { display: none; }
}

/* ---------- 8.3 Alarm button „Notfall melden“ (contract § 5.1.4, preview .btn--red) -- */
.rs-alarm {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  min-height: 36px;
  padding: .55rem .9rem;
  border: 1px solid var(--rs-danger);
  border-radius: var(--rs-radius-xs);
  background: var(--rs-danger);
  box-shadow: 0 4px 14px rgb(var(--rs-danger-rgb) / .28);
  color: var(--rs-on-danger);            /* 5.62:1 */
  font-family: var(--rs-font);
  font-size: var(--rs-fs-meta);
  font-weight: var(--rs-fw-black);
  line-height: 1.1;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color var(--rs-dur-form) ease, border-color var(--rs-dur-form) ease;
}
.rs-alarm:hover { border-color: var(--rs-danger-hover); background: var(--rs-danger-hover); color: var(--rs-on-danger); }
.rs-alarm:active { border-color: var(--rs-danger-pressed); background: var(--rs-danger-pressed); }
.rs-alarm:focus-visible {                /* light ring + charcoal halo – visible on light and dark */
  outline: 3px solid var(--rs-danger-focus);
  outline-offset: 2px;
  box-shadow: 0 0 0 5px var(--rs-charcoal);
}
.rs-alarm .icon { width: 1.05em; height: 1.05em; stroke-width: 2.25; }
.rs-alarm__label { display: inline-block; }
.rs-alarm__pulse {                       /* pulsing white dot on the top-right corner (design preview) */
  position: absolute;
  top: -4px;
  right: -4px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--rs-on-danger);
  box-shadow: 0 0 0 2px var(--rs-danger);
  animation: rs-alarm-pulse 2s ease-out infinite;
  pointer-events: none;
}
.rs-alarm--header {                      /* only < 1200 px, left of the burger (preview .nav__sos) */
  display: none;
  flex: none;
  gap: 6px;
  min-height: 40px;
  padding: 0 12px;
  font-size: var(--rs-fs-small);         /* 14 px */
}
.rs-alarm--header .icon { width: 16px; height: 16px; }
.rs-alarm--header .rs-alarm__pulse { top: -3px; right: -3px; width: 9px; height: 9px; }
.rs-alarm--block {
  display: flex;
  width: 100%;
  min-height: 2.75rem;
  font-size: var(--rs-fs-ui);
}
.rs-alarm--footer { margin-top: 1rem; min-height: 2.5rem; }
@media (max-width: 74.99em) {
  .rs-alarm--header { display: inline-flex; }
}
@media (max-width: 370px) {
  .rs-alarm--header { padding: 0 10px; }
}

/* ---------- 8.4 Language switch (contract § 4.2, preview .lang) ------------ */
.rs-lang__list { display: flex; align-items: center; margin: 0; padding: 0; list-style: none; }
.rs-lang__list > li { display: flex; align-items: center; }
.rs-lang__list > li + li::before {
  content: "|";
  margin: 0 .35rem;
  color: #5F6870;
  font-size: var(--rs-fs-meta);
  font-weight: var(--rs-fw-bold);
  line-height: 1;
}
.rs-lang__link {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 3px 2px;
  color: var(--rs-on-dark-4);
  text-decoration: none;
  transition: color var(--rs-dur-instant) ease;
}
.rs-lang__code { font-size: var(--rs-fs-meta); font-weight: var(--rs-fw-bold); line-height: 1; text-transform: uppercase; }
.rs-lang__link[aria-current] { color: var(--rs-white); }
.rs-lang__link:hover { color: var(--rs-primary); }
.rs-lang__link:focus-visible { outline: 2px solid var(--rs-white); outline-offset: 3px; border-radius: 2px; }
.rs-lang--footer .rs-lang__link[aria-current]::after {   /* footer only: small accent under the current language */
  content: "";
  position: absolute;
  left: 2px;
  right: 2px;
  bottom: 0;
  height: 2px;
  background: var(--rs-primary);
}
.rs-lang--drawer .rs-lang__list { justify-content: center; }
.rs-lang--drawer .rs-lang__link { min-height: 44px; }

/* ---------- 8.5 Header row ------------------------------------------------- */
.site-header {
  position: relative;                    /* no z-index on desktop: the drawer must be able to cover the top bar */
  height: 112px;                         /* design preview --header-h */
  margin: 0;
  padding: 0;
  color: var(--rs-white);
}
.topbar + .site-header { margin-top: var(--rs-topbar-h); }
.site-header__bar {
  position: relative;
  display: flex;
  align-items: center;
  column-gap: 1rem;
  height: 100%;
  max-width: calc(var(--rs-container) + 2 * var(--rs-gutter));
  margin: 0 auto;
  padding: 0 var(--rs-gutter);
}
.nav__logo,
.nav__drawer-logo { flex: none; display: block; line-height: 0; border-radius: 4px; }
.nav__logo img,
.nav__drawer-logo img { display: block; width: auto; max-width: none; height: 34px; }   /* 251 × 34 (preview) */
.nav__logo:focus-visible,
.nav__drawer-logo:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: 6px; }

/* desktop navigation */
.nav { display: flex; flex: 1 1 auto; align-items: center; justify-content: flex-end; min-width: 0; }
.nav__list {
  display: flex;
  flex: 1 1 auto;
  justify-content: flex-end;             /* right-aligned like the preview */
  margin: 0;
  padding: 0;
  list-style: none;
}
.nav__item { position: relative; margin: 0; padding: 0; }   /* containing block of its mega panel */
.nav__link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  column-gap: 8px;
  margin: 0;
  padding: 1em 20px;                     /* 17 / 20 px → row height 61.2 px */
  border: 0;
  border-radius: 0;
  background: none;
  color: var(--rs-white);
  font-family: var(--rs-font);
  font-size: var(--rs-fs-body);
  font-weight: var(--rs-fw-regular);
  line-height: var(--rs-lh-body);
  text-align: left;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: color var(--rs-dur-instant) ease;
}
.nav__item:last-child > .nav__link { padding-right: 0; }
.nav__chevron { display: flex; align-items: center; }
.nav__chevron .icon { width: 16px; height: 16px; stroke-width: 2.25; transition: transform var(--rs-dur-base) ease; }
.nav__link[aria-expanded="true"] .nav__chevron .icon { transform: rotate(180deg); }

/* split item: real link + separate toggle (spec/05 § 1.1) – same footprint as the preview's button */
.nav__item--split { display: flex; align-items: stretch; }
.nav__item--split > .nav__link { padding-right: 0; }
.nav__toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: content-box;
  width: 16px;
  margin: 0;
  padding: 0 20px 0 8px;
  border: 0;
  border-radius: 0;
  background: none;
  color: var(--rs-white);
  cursor: pointer;
  transition: color var(--rs-dur-instant) ease;
}
.nav__toggle .icon { width: 16px; height: 16px; stroke-width: 2.25; transition: transform var(--rs-dur-base) ease; }
.nav__toggle[aria-expanded="true"] .icon { transform: rotate(180deg); }

/* states: open, current, section; hover only with a real pointer (preview) */
@media (hover: hover) {
  .nav__item:hover > .nav__link,
  .nav__item:hover > .nav__toggle { color: var(--rs-primary); }
}
.nav__item.is-open > .nav__link,
.nav__toggle[aria-expanded="true"],
.nav__link[aria-expanded="true"],
.nav__link[aria-current="page"],
.nav__item.is-active > .nav__link,
.nav__item.is-active > .nav__toggle { color: var(--rs-primary); }
.nav__link:focus-visible,
.nav__toggle:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: -6px; border-radius: 8px; }

/* drawer-only parts are hidden on desktop */
.nav__burger,
.nav__backdrop,
.nav__drawer { display: none; }

/* ---------- 8.6 Mega panels: shared frame (desktop, preview values) -------- */
.mega {
  position: absolute;
  top: 100%;                             /* flush with the bottom of the nav item */
  left: 0;                               /* main.js sets the horizontal offset (centred / anchored + clamped) */
  z-index: 50;
  overflow: hidden;
  border: 1px solid var(--rs-grey-300);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-white);
  box-shadow: 0 24px 65px rgb(var(--rs-charcoal-rgb) / .22);
  color: var(--rs-text);
  font-size: 1rem;
  line-height: 1.5;
  text-align: left;
  white-space: normal;
}
:where(.mega) a { color: inherit; text-decoration: none; }

.mega__eyebrow {
  margin: 0 8px 12px;
  color: var(--rs-on-dark-4);
  font-size: .71875rem;                  /* 11.5 px uppercase */
  font-weight: var(--rs-fw-bold);
  letter-spacing: var(--rs-ls-eyebrow);
  line-height: 1.2;
  text-transform: uppercase;
}
.mega__tagline {
  position: absolute;
  left: 22px;
  right: 18px;
  bottom: 26px;
  padding-left: 12px;
  border-left: 4px solid var(--rs-primary);
  color: var(--rs-on-dark-3);
  font-size: .84375rem;                  /* 13.5 px */
  line-height: 1.45;
}

.mega__head { margin-bottom: 10px; }
.mega__title-row { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; }
.mega__title {
  color: var(--rs-text);
  font-size: 1.375rem;                   /* 22 px */
  font-weight: var(--rs-fw-black);
  letter-spacing: var(--rs-ls-tight);
  line-height: 1.2;
  transition: color var(--rs-dur-instant) ease;
}
a.mega__title:hover { color: var(--rs-secondary-ink); }
a.mega__title:focus-visible { outline: 2px solid var(--rs-secondary-ink); outline-offset: 3px; border-radius: 3px; }
.mega__title--static { display: block; }
.mega__all {                             /* „Zur Übersicht →“ right of the title (preview) */
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-left: auto;
  color: var(--rs-secondary-ink);
  font-size: .84375rem;                  /* 13.5 px */
  font-weight: var(--rs-fw-black);
}
:where(.mega) a.mega__all { color: var(--rs-secondary-ink); }
.mega__all .icon { width: 14px; height: 14px; stroke-width: 2.25; transition: transform var(--rs-dur-fast) ease; }
.mega__all:hover .icon { transform: translateX(3px); }
.mega__desc { max-width: 640px; margin-top: 3px; color: var(--rs-text-muted); font-size: .90625rem; line-height: 1.5; }   /* 14.5 px */

/* card grid (services: 3 columns, industries: 2 columns) */
.mega__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 24px; }
.mega__grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.mega__grid > li { display: flex; min-width: 0; }
.mega__card {
  position: relative;
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  align-items: start;
  gap: 13px;
  min-width: 0;
  min-height: 92px;
  padding: 15px 26px 14px 0;
  border-bottom: 1px solid var(--rs-grey-300);
  color: var(--rs-text);
  transition: background-color var(--rs-dur-fast) ease, box-shadow var(--rs-dur-fast) ease;
}
.mega__card:hover {
  background: var(--rs-grey);
  box-shadow: 10px 0 0 var(--rs-grey), -10px 0 0 var(--rs-grey);   /* hover bleeds past the text column */
  color: var(--rs-text);
}
.mega__card:focus-visible { outline: 2px solid var(--rs-secondary); outline-offset: 2px; background: var(--rs-grey); }
.mega__card[aria-current="page"] .mega__card-title { color: var(--rs-secondary-ink); }
.mega__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--rs-radius-7);
  background: var(--rs-primary-50);
  color: var(--rs-secondary);
}
.mega__icon .icon { width: 21px; height: 21px; stroke-width: 1.75; }
.mega__card-body { min-width: 0; }
.mega__card-title { display: block; color: var(--rs-text); font-size: .90625rem; font-weight: var(--rs-fw-bold); line-height: 1.3; }   /* 14.5 px */
.mega__card-desc { display: block; margin-top: 4px; color: var(--rs-text-muted); font-size: var(--rs-fs-meta); line-height: 1.45; }
.mega__arrow {
  position: absolute;
  top: 18px;
  right: 4px;
  width: 16px;
  height: 16px;
  color: var(--rs-secondary);
  transition: transform var(--rs-dur-fast) ease;
}
.mega__card:hover .mega__arrow,
.mega__card:focus-visible .mega__arrow { transform: translateX(3px); }
.mega__card--compact { align-items: center; min-height: 70px; padding: 12px 30px 12px 0; }
.mega__card--compact .mega__arrow { top: 50%; margin-top: -8px; }
.mega__card--compact .mega__card-title { font-size: var(--rs-fs-ui); }

/* CTA cards (no photos: charcoal gradient + dot grid fading in towards the bottom) */
.mega__ctas { display: flex; flex-direction: column; min-width: 0; }
.mega__cta {
  position: relative;
  isolation: isolate;
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  margin: 12px 12px 12px 0;
  padding: 26px 22px 22px;
  overflow: hidden;
  border-radius: var(--rs-radius-9);
  background: linear-gradient(165deg, var(--rs-charcoal-700) 0%, var(--rs-charcoal) 52%, #1A1E22 100%);
  color: var(--rs-white);
}
.mega__cta::before {
  content: "";
  position: absolute;
  inset: 42% 0 0;
  z-index: -1;
  background-image: radial-gradient(circle, rgb(var(--rs-primary-rgb) / .55) 1.3px, transparent 1.8px);
  background-size: 11px 11px;
  opacity: .5;
  -webkit-mask-image: linear-gradient(to bottom, transparent, #000 80%);
          mask-image: linear-gradient(to bottom, transparent, #000 80%);
  pointer-events: none;
}
.mega__cta-title { max-width: 250px; color: var(--rs-white); font-size: 1.25rem; font-weight: var(--rs-fw-black); letter-spacing: -.015em; line-height: 1.25; }
.mega__cta-text { margin-top: 10px; color: var(--rs-on-dark-2); font-size: var(--rs-fs-small); line-height: 1.5; }
.mega__cta-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  min-height: 44px;
  margin-top: 16px;
  padding: 10px 15px;
  border: 1px solid var(--rs-primary);
  border-radius: var(--rs-radius-xs);
  background: var(--rs-primary);
  color: var(--rs-on-primary);           /* B-5: primary + ink (7.42:1) */
  font-size: var(--rs-fs-ui);
  font-weight: var(--rs-fw-black);
  line-height: 1.2;
  text-align: center;
  white-space: nowrap;
  transition: background-color var(--rs-dur-fast) ease, border-color var(--rs-dur-fast) ease;
}
:where(.mega) a.mega__cta-btn { color: var(--rs-on-primary); }
.mega__cta-btn .icon { width: 16px; height: 16px; stroke-width: 2.25; }
.mega__cta-btn:hover { border-color: var(--rs-primary-300); background: var(--rs-primary-300); color: var(--rs-on-primary); }
.mega__cta-btn:focus-visible { outline: 2px solid var(--rs-white); outline-offset: 3px; }
.mega__cta-btn--red,
:where(.mega) a.mega__cta-btn--red { border-color: var(--rs-danger); background: var(--rs-danger); color: var(--rs-on-danger); }
.mega__cta-btn--red:hover { border-color: var(--rs-danger-hover); background: var(--rs-danger-hover); color: var(--rs-on-danger); }
.mega__cta-mail { margin-top: 10px; color: var(--rs-on-dark-3); font-size: var(--rs-fs-meta); line-height: 1.45; }
.mega__cta-mail a,
:where(.mega) .mega__cta-mail a { color: var(--rs-primary); text-decoration: none; }
.mega__cta-mail a:hover,
.mega__cta-mail a:focus-visible { color: var(--rs-primary-200); text-decoration: underline; }
.mega__hotline,
:where(.mega) a.mega__hotline {          /* big hotline number in the emergency card (preview) */
  display: inline-flex;
  align-items: center;
  gap: 10px;
  width: fit-content;
  margin-top: 16px;
  color: var(--rs-white);
  font-size: clamp(1.125rem, 1.46vw, 1.3125rem);   /* 21 px from 1440 px (preview); smaller so it fits the 256 px card at 1200 px */
  font-weight: var(--rs-fw-black);
  letter-spacing: .01em;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.mega__hotline .icon { width: 20px; height: 20px; color: var(--rs-primary); stroke-width: 2; }
.mega__hotline:hover { color: var(--rs-primary-200); }
.mega__hotline:focus-visible { outline: 2px solid var(--rs-white); outline-offset: 3px; border-radius: 3px; }
.mega__proof {
  display: grid;
  gap: 9px;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--rs-white-a14);
}
.mega__proof li {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  color: var(--rs-on-dark-2);
  font-size: .84375rem;                  /* 13.5 px */
  line-height: 1.35;
}
.mega__proof .icon { width: 17px; height: 17px; color: var(--rs-primary); stroke-width: 2; }
.mega__signoff {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: auto;                      /* pinned to the card bottom */
  padding-top: 18px;
  color: var(--rs-white);
  font-size: .65625rem;                  /* 10.5 px uppercase (B-5 exception) */
  font-weight: var(--rs-fw-bold);
  letter-spacing: .08em;
  line-height: 1.4;
  text-transform: uppercase;
  text-wrap: balance;
}
.mega__signoff::before { content: ""; flex: none; width: 14px; height: 2px; background: var(--rs-primary); }

/* ---------- 8.7 Leistungen: two areas x two tabs, one tablist, no counters ---- */
.mega--services {
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(256px, 21vw, 306px);
  width: min(90rem, var(--vw));          /* full-bleed up to 1440 px, centred by main.js */
}
.mega__tabs {
  display: grid;
  grid-template-columns: clamp(252px, 17.5vw, 258px) minmax(0, 1fr);   /* preview 17.5vw; ≥ 252 px keeps „Penetration Testing“/„Prävention & Monitoring“ on one line at 1200–1440 px */
  min-width: 0;
  min-height: 536px;
}
.mega__aside {
  position: relative;
  min-width: 0;
  padding: 26px 12px 120px;
  background: var(--rs-charcoal);
  color: var(--rs-on-dark-1);
}
.mega__tablist { display: grid; align-content: start; gap: 6px; }
.mega__group {                           /* area eyebrow (aria-hidden) – preview spacing 12 px below, 26 px above the 2nd */
  margin: 0 0 -6px;                      /* preview: eyebrow flush on the first tab (cancels the 6 px gap) */
  color: var(--rs-on-dark-4);
  font-size: .71875rem;
  font-weight: var(--rs-fw-bold);
  letter-spacing: var(--rs-ls-eyebrow);
  line-height: 1.2;
  text-transform: uppercase;
}
.mega__group ~ .mega__group { margin-top: 20px; }   /* 26 px above the second area */
.mega__tab {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) 14px;
  align-items: center;
  gap: 8px;
  width: 100%;
  min-height: 50px;
  margin: 0;
  padding: 10px 9px;
  border: 0;
  border-radius: var(--rs-radius-sm);
  background: transparent;
  color: var(--rs-on-dark-1);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: background-color var(--rs-dur-fast) ease, color var(--rs-dur-fast) ease;
}
.mega__tab:hover { background: var(--rs-white-a07); color: var(--rs-white); }
.mega__tab[aria-selected="true"] { background: var(--rs-primary); color: var(--rs-on-primary); }   /* after :hover on purpose */
.mega__tab:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: 2px; }
.mega__tab-icon { justify-self: center; width: 20px; height: 20px; stroke-width: 1.8; }
.mega__tab-name { min-width: 0; font-size: var(--rs-fs-small); font-weight: var(--rs-fw-bold); line-height: 1.25; }
.mega__tab-arrow { justify-self: center; width: 14px; height: 14px; stroke-width: 2.25; }
.mega__panels { min-width: 0; padding: 26px 28px; }

/* ---------- 8.8 Branchen ----------------------------------------------------- */
.mega--industries {
  display: grid;
  grid-template-columns: clamp(222px, 18vw, 252px) minmax(0, 1fr) clamp(256px, 21vw, 306px);
  width: min(71rem, var(--vw));          /* 1136 px */
}
.mega__intro {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
  padding: 30px 24px 104px;
  background: var(--rs-charcoal);
  color: var(--rs-white);
}
.mega__intro .mega__eyebrow { margin: 0 0 14px; }
.mega__intro-title { margin-bottom: 10px; color: var(--rs-white); font-size: 1.25rem; font-weight: var(--rs-fw-black); letter-spacing: var(--rs-ls-tight); line-height: 1.25; }
.mega__intro-text { margin-bottom: 18px; color: var(--rs-on-dark-3); font-size: var(--rs-fs-small); line-height: 1.55; }
.mega__more,
:where(.mega) a.mega__more {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  width: fit-content;
  min-height: 32px;
  color: var(--rs-primary);
  font-size: .90625rem;                  /* 14.5 px */
  font-weight: var(--rs-fw-black);
  line-height: 1.3;
  transition: color var(--rs-dur-instant) ease;
}
.mega__more .icon { width: 15px; height: 15px; stroke-width: 2.25; transition: transform var(--rs-dur-fast) ease; }
.mega__more:hover { color: var(--rs-white); }
.mega__more:hover .icon { transform: translateX(3px); }
.mega__more:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: 3px; border-radius: 4px; }
.mega__main { min-width: 0; padding: 26px 26px 24px; }

/* ---------- 8.9 Ressourcen (list dropdown, 37.5 rem) ------------------------ */
.mega--resources { width: min(37.5rem, var(--vw)); padding: 22px 24px 18px; }
.mega--resources .mega__eyebrow { margin: 0 0 10px; color: var(--rs-text-muted); font-weight: var(--rs-fw-black); }
.mega__list > li { border-bottom: 1px solid var(--rs-grey-300); }
.mega__list > li:last-child { border-bottom: 0; }
.mega__row {
  position: relative;
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
  min-height: 74px;
  padding: 12px 40px 12px 10px;
  border-radius: var(--rs-radius-sm);
  color: var(--rs-text);
  transition: background-color var(--rs-dur-fast) ease;
}
.mega__row:hover { background: var(--rs-grey); color: var(--rs-text); }
.mega__row:focus-visible { outline: 2px solid var(--rs-secondary); outline-offset: -2px; background: var(--rs-grey); }
.mega__row .mega__icon { width: 42px; height: 42px; border: 1px solid rgb(var(--rs-primary-rgb) / .25); }
.mega__row-body { min-width: 0; }
.mega__row-title { display: block; font-size: .96875rem; font-weight: var(--rs-fw-bold); line-height: 1.35; }   /* 15.5 px */
.mega__row-desc { display: block; margin-top: 2px; color: var(--rs-text-muted); font-size: var(--rs-fs-small); line-height: 1.45; }
.mega__row[aria-current="page"] .mega__row-title { color: var(--rs-secondary-ink); }
.mega__row .mega__arrow { top: 50%; right: 14px; margin-top: -8px; }
.mega__row:hover .mega__arrow,
.mega__row:focus-visible .mega__arrow { transform: translateX(3px); }

/* ---------- 8.10 Drawer range (< 1200 px): compact header, burger, off-canvas -- */
@media (max-width: 74.99em) {
  :root { --rs-stuck-h: 68px; }          /* header row stays on top → anchor offset */
  .nav { display: none; }
  .site-header {
    height: 68px;                        /* preview --header-h-m */
    border-bottom: 1px solid rgb(var(--rs-primary-rgb) / .22);
    background: var(--rs-charcoal);
    transition: box-shadow var(--rs-dur-base) ease;
  }
  .js .site-header {                     /* always visible on top (preview: sticky); out of the flow → heroes keep their top space */
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1050;
  }
  html[data-scrolled] .site-header { box-shadow: 0 6px 18px rgb(var(--rs-black-rgb) / .3); }
  .site-header__bar { column-gap: 10px; max-width: none; padding: 0 var(--rs-gutter); }
  .nav__logo { margin-right: auto; }
  .nav__logo img,
  .nav__drawer-logo img { height: 28px; }   /* 207 × 28 */

  .nav__burger,
  .nav__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    width: 44px;
    height: 44px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: var(--rs-radius-xs);
    background: var(--rs-white-a08);
    color: var(--rs-white);
    cursor: pointer;
    transition: background-color var(--rs-dur-instant) ease, color var(--rs-dur-instant) ease;
  }
  .nav__burger .icon,
  .nav__close .icon { width: 24px; height: 24px; stroke-width: 1.75; }
  .nav__burger:hover,
  .nav__close:hover { background: var(--rs-primary); color: var(--rs-on-primary); }
  .nav__burger:focus-visible,
  .nav__close:focus-visible { outline: 2px solid var(--rs-white); outline-offset: 2px; }

  .nav__backdrop {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 1150;
    background: rgb(var(--rs-black-rgb) / .6);
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--rs-dur-base) ease, visibility 0s linear var(--rs-dur-base);
  }
  .nav__backdrop.is-open { opacity: 1; visibility: visible; transition: opacity var(--rs-dur-base) ease, visibility 0s; }

  .nav__drawer {
    position: fixed;
    inset: 0 0 0 auto;
    z-index: 1200;
    display: flex;
    flex-direction: column;
    width: min(100%, 26.25rem);          /* full screen on phones, 420 px panel on tablets */
    height: 100vh;
    height: 100dvh;
    overflow-y: auto;
    overscroll-behavior: contain;
    background: var(--rs-charcoal);
    color: var(--rs-white);
    transform: translateX(100%);
    visibility: hidden;
    transition: transform var(--rs-dur-base) var(--rs-ease-slide), visibility 0s linear var(--rs-dur-base);
  }
  .nav__drawer.is-open { transform: none; visibility: visible; transition: transform var(--rs-dur-base) var(--rs-ease-slide), visibility 0s; }
  .nav__drawer-head {
    display: flex;
    flex: none;
    flex-direction: row-reverse;         /* close button first in focus order, shown on the right */
    align-items: center;
    justify-content: space-between;
    height: 68px;
    padding: 0 16px;
    border-bottom: 1px solid var(--rs-white-a08);
  }
}
@media (max-width: 600px) {
  .nav__logo img,
  .nav__drawer-logo img { height: 24px; }   /* 177 × 24 */
}
@media (max-width: 370px) {
  .nav__logo img,
  .nav__drawer-logo img { height: 20px; }   /* 148 × 20 */
}

/* ---------- 8.11 Mobile navigation content (.mnav, preview drawer) ------------ */
.mnav { flex: none; }
.mnav__list { margin: 0; padding: 4px 0; list-style: none; }
.mnav__item { border-bottom: 1px solid var(--rs-white-a07); }
.mnav__row { display: flex; align-items: stretch; }
.mnav__link {
  display: flex;
  flex: 1 1 auto;
  align-items: center;
  justify-content: space-between;
  min-width: 0;
  margin: 0;
  padding: 14px 20px;
  border: 0;
  background: none;
  color: var(--rs-white);
  font-family: var(--rs-font);
  font-size: var(--rs-fs-lead);          /* 18 px / 700 */
  font-weight: var(--rs-fw-bold);
  line-height: var(--rs-lh-body);
  text-align: left;
  text-decoration: none;
  transition: color var(--rs-dur-instant) ease;
}
.mnav__item--sub > .mnav__row > a.mnav__link { padding-right: 0; }
.mnav__link:hover,
.mnav__link[aria-current="page"],
.mnav__item.is-active > .mnav__link,
.mnav__item.is-active > .mnav__row > .mnav__link { color: var(--rs-primary); }
.js .mnav__item--sub:has(> .mnav__row [aria-expanded="true"]) > .mnav__row > .mnav__link { color: var(--rs-primary); }
.mnav__link--button { width: 100%; cursor: pointer; }
.mnav__link .icon,
.mnav__toggle .icon { width: 18px; height: 18px; stroke-width: 2.25; transition: transform var(--rs-dur-base) ease; }
.mnav__link--button[aria-expanded="true"] .icon,
.mnav__toggle[aria-expanded="true"] .icon { transform: rotate(180deg); }
.mnav__toggle {                          /* chevron of a split row – looks like the preview's full-width button */
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: flex-end;
  width: 64px;
  margin: 0;
  padding: 0 20px 0 0;
  border: 0;
  background: none;
  color: var(--rs-white);
  cursor: pointer;
  transition: color var(--rs-dur-instant) ease;
}
.mnav__toggle:hover,
.mnav__toggle[aria-expanded="true"] { color: var(--rs-primary); }
.mnav__link:focus-visible,
.mnav__toggle:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: -4px; border-radius: 6px; }

.mnav__panel { padding: 6px 0 14px; background: rgb(var(--rs-black-rgb) / .22); }   /* open sub-menu on a darker band */
.mnav__group {
  margin: 12px 20px 6px;
  color: var(--rs-on-dark-4);
  font-size: .71875rem;                  /* 11.5 px */
  font-weight: var(--rs-fw-bold);
  letter-spacing: var(--rs-ls-eyebrow);
  line-height: 1.2;
  text-transform: uppercase;
}
.mnav__tab {                             /* Leistungen → Bereich → Reiter (preview .mnav__toggle) */
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) 18px;
  align-items: center;
  gap: 10px;
  width: calc(100% - 24px);
  margin: 4px 12px;
  padding: 12px;
  border: 0;
  border-radius: var(--rs-radius-sm);
  background: var(--rs-white-a07);
  color: var(--rs-white);
  font: var(--rs-fw-bold) .96875rem/1.3 var(--rs-font);   /* 15.5 px */
  text-align: left;
  cursor: pointer;
  transition: background-color var(--rs-dur-fast) ease, color var(--rs-dur-fast) ease;
}
.mnav__tab[aria-expanded="true"] { background: var(--rs-primary); color: var(--rs-on-primary); }
.mnav__tab:focus-visible { outline: 2px solid var(--rs-white); outline-offset: 2px; }
.mnav__tab-icon { width: 20px; height: 20px; }
.mnav__tab-name { min-width: 0; }
.mnav__tab-chev { width: 18px; height: 18px; stroke-width: 2.25; transition: transform var(--rs-dur-base) ease; }
.mnav__tab[aria-expanded="true"] .mnav__tab-chev { transform: rotate(180deg); }
.mnav__tabpanel { margin: 4px 12px 10px 23px; border-left: 2px solid rgb(var(--rs-primary-rgb) / .35); }
.mnav__cards { margin: 0; padding: 0; list-style: none; }
.mnav__card {
  position: relative;
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  align-items: center;
  gap: 12px;
  padding: 9px 46px 9px 14px;
  color: var(--rs-on-dark-1);
  text-decoration: none;
  transition: background-color var(--rs-dur-fast) ease, color var(--rs-dur-fast) ease;
}
.mnav__cards--flat .mnav__card { padding-left: 20px; }
.mnav__card:hover { background: var(--rs-white-a05); color: var(--rs-white); }
.mnav__card[aria-current="page"] { color: var(--rs-primary); }
.mnav__card:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: -2px; }
.mnav__card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: var(--rs-radius-7);
  background: var(--rs-primary-a14);
  color: var(--rs-primary);
}
.mnav__card-icon .icon { width: 18px; height: 18px; stroke-width: 1.75; }
.mnav__card-title { min-width: 0; font-size: var(--rs-fs-ui); font-weight: var(--rs-fw-bold); line-height: 1.3; }
.mnav__card-arrow { position: absolute; top: 50%; right: 20px; width: 16px; height: 16px; margin-top: -8px; color: var(--rs-primary); transition: transform var(--rs-dur-fast) ease; }
.mnav__card:hover .mnav__card-arrow { transform: translateX(3px); }
.mnav__all {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 14px 6px 62px;
  color: var(--rs-primary);
  font-size: .90625rem;                  /* 14.5 px */
  font-weight: var(--rs-fw-black);
  line-height: 1.5;
  text-decoration: none;
}
.mnav__all--flat { padding: 10px 20px 4px 66px; }
.mnav__all .icon { width: 15px; height: 15px; stroke-width: 2.25; transition: transform var(--rs-dur-fast) ease; }
.mnav__all:hover { color: var(--rs-white); }
.mnav__all:hover .icon { transform: translateX(3px); }
.mnav__all:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: 2px; border-radius: 4px; }

/* contact block in the drawer (preview .drawer-contact) */
.mnav__contact { display: grid; gap: 14px; padding: 24px 20px 36px; }
.mnav__contact-title {
  margin: 0;
  color: var(--rs-on-dark-4);
  font-size: .71875rem;
  font-weight: var(--rs-fw-bold);
  letter-spacing: var(--rs-ls-eyebrow);
  line-height: 1.2;
  text-transform: uppercase;
}
.mnav__contact-row {
  display: flex;
  align-items: center;
  gap: 12px;
  color: var(--rs-white);
  font-size: 1rem;
  font-weight: var(--rs-fw-bold);
  line-height: 1.3;
  text-decoration: none;
}
.mnav__contact-row small { display: block; margin-bottom: 2px; color: var(--rs-on-dark-4); font-size: .78125rem; font-weight: var(--rs-fw-regular); }
.mnav__contact-row:hover { color: var(--rs-primary); }
.mnav__contact-row:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: 3px; border-radius: 4px; }
.mnav__contact-tile {
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: var(--rs-radius-7);
  background: var(--rs-primary-a14);
  color: var(--rs-primary);
}
.mnav__contact-tile .icon { width: 18px; height: 18px; stroke-width: 2; }
.mnav__hours { margin: 0; color: var(--rs-on-dark-3); font-size: .84375rem; line-height: 1.5; }
.mnav__btn {                             /* preview .btn inside .drawer-contact */
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  width: 100%;
  min-height: 48px;
  padding: .7rem 1.1rem;
  border: 1px solid transparent;
  border-radius: var(--rs-radius-xs);
  font: var(--rs-fw-black) var(--rs-fs-ui)/1.1 var(--rs-font);
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color var(--rs-dur-form) ease, border-color var(--rs-dur-form) ease, color var(--rs-dur-form) ease;
}
.mnav__btn .icon { width: 1.05em; height: 1.05em; stroke-width: 2.25; }
.mnav__btn--quote { border-color: var(--rs-primary-300); background: var(--rs-primary); box-shadow: 0 4px 12px rgb(var(--rs-primary-rgb) / .16); color: var(--rs-on-primary); }
.mnav__btn--quote:hover { background: var(--rs-primary-300); color: var(--rs-on-primary); }
.mnav__btn--alarm { border-color: var(--rs-danger); background: var(--rs-danger); box-shadow: 0 4px 14px rgb(var(--rs-danger-rgb) / .28); color: var(--rs-on-danger); }
.mnav__btn--alarm:hover { border-color: var(--rs-danger-hover); background: var(--rs-danger-hover); color: var(--rs-on-danger); }
.mnav__btn:focus-visible { outline: 2px solid var(--rs-white); outline-offset: 3px; }
.mnav__contact > .rs-lang--drawer { margin-top: 2px; }

/* scroll lock while the drawer is open (main.js: html.is-scroll-locked + --rs-scrollbar-w) */
html.is-scroll-locked,
html.is-scroll-locked body { overflow: hidden; }
html.is-scroll-locked { padding-right: var(--rs-scrollbar-w, 0px); }

/* ---------- 8.13 No-JS fallbacks ------------------------------------------- */
@media (min-width: 75em) {               /* desktop: panels open on :hover / :focus-within (02 § 11) */
  .no-js .site-header__bar { position: relative; }
  .no-js .nav__item--mega { position: static; }
  .no-js .mega { top: calc(100% - 25px); }
  .no-js .mega--services { left: 20px; right: 20px; width: auto; }
  .no-js .mega--industries,
  .no-js .mega--resources { left: auto; right: 20px; }
  .no-js .nav__item--mega:is(:hover, :focus-within) > .mega--services[hidden],
  .no-js .nav__item--mega:is(:hover, :focus-within) > .mega--industries[hidden] { display: grid !important; }
  .no-js .nav__item--mega:is(:hover, :focus-within) > .mega--resources[hidden] { display: block !important; }
  .no-js .mega__tabpanel[hidden] { display: block !important; }
  .no-js .mega--services .mega__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }   /* panel is only as wide as the header bar */
  .no-js .mega__tabpanel + .mega__tabpanel { margin-top: 1.5rem; }
}
@media (max-width: 74.99em) {            /* drawer range: the drawer is plain page content */
  .no-js .site-top { position: relative; background: var(--rs-charcoal-900); }
  .no-js .nav__burger,
  .no-js .nav__drawer-head,
  .no-js .nav__backdrop { display: none; }
  .no-js .nav__drawer {
    position: static;
    width: 100%;
    height: auto;
    overflow: visible;
    transform: none;
    visibility: visible;
  }
  .no-js .mnav__panel[hidden],
  .no-js .mnav__tabpanel[hidden] { display: block !important; }
  .no-js .mnav__toggle,
  .no-js .mnav__tab-chev,
  .no-js .mnav__link--button .icon { display: none; }
}

/* ===== 09 Breadcrumb ===== */
/* 08 B-6 – visible on every sub-page (spec/05 § 1.6); default = on dark heroes.
   Labels = navigation labels; the current page is never a link. */
.rs-breadcrumb {
  margin: 0 0 1.25rem;
  color: var(--rs-text-muted);
  font-size: var(--rs-fs-meta);
  font-weight: var(--rs-fw-regular);
  letter-spacing: .2px;
  line-height: 1.5;
}
.rs-breadcrumb ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  row-gap: .25rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.rs-breadcrumb li { display: inline-flex; align-items: center; min-width: 0; }
.rs-breadcrumb li + li::before {         /* chevron separator, decorative */
  content: "";
  flex: 0 0 auto;
  width: .38em;
  height: .38em;
  margin: 0 .7em 0 .45em;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  opacity: .75;
  transform: rotate(45deg);
}
.rs-breadcrumb ol a {
  color: var(--rs-secondary-ink);
  text-decoration: none;
  transition: color var(--rs-dur-base) var(--rs-ease);
}
.rs-breadcrumb ol a:hover { color: var(--rs-text); text-decoration: underline; text-underline-offset: .2em; }
.rs-breadcrumb ol a:focus-visible { outline: 2px solid var(--rs-focus); outline-offset: 3px; border-radius: 2px; }
.rs-breadcrumb [aria-current="page"] { color: var(--rs-text); font-weight: var(--rs-fw-bold); }

.rs-breadcrumb--on-dark { color: var(--rs-text-on-dark-subtle); }          /* 7.54:1 on charcoal */
.rs-breadcrumb--on-dark ol a { color: var(--rs-primary); }                  /* 6.49:1 / 7.02:1 on #191C1F */
.rs-breadcrumb--on-dark ol a:hover { color: var(--rs-primary-200); }
.rs-breadcrumb--on-dark [aria-current="page"] { color: var(--rs-white); }
.rs-breadcrumb--center ol { justify-content: center; }
.rs-breadcrumb--bar::before {            /* optional accent bar */
  content: "";
  display: block;
  width: 48px;
  height: 2px;
  margin: 0 0 14px;
  background: var(--rs-primary);
  opacity: .9;
}
.rs-breadcrumb--center.rs-breadcrumb--bar::before { margin-inline: auto; }
@media (max-width: 768px) { .rs-breadcrumb--bar::before { width: 36px; margin-bottom: 10px; } }

/* ===== 10 Shapes, tones, backgrounds ===== */
/* Section rhythm (contract § 1.10): every section root in <main> carries one
   tone; shape dividers (01 § 7.1) only where the neighbour has another tone.
   The wedge colour is always the NEIGHBOUR's tone (top = previous section,
   bottom = next section); notch (secondary) and vcut (#6B7177) are fixed. */

/* ---------- 10.1 Tones ------------------------------------------------------ */
.rs-tone-white { background-color: var(--rs-tone-white); }
.rs-tone-grey  { background-color: var(--rs-tone-grey); }
.rs-tone-dark  { background-color: var(--rs-tone-dark); }   /* fallback – dark components paint their own surface below */
/* equal neighbours (avoided by the renderer, but possible): hairline instead of a shape */
.rs-tone-grey + .rs-tone-grey { border-top: 1px solid var(--rs-grey-300); }
.rs-tone-dark + .rs-tone-dark { border-top: 1px solid var(--rs-charcoal-500); }

/* ---------- 10.2 Shape dividers --------------------------------------------- */
.rs-has-shape { position: relative; isolation: isolate; }
.rs-has-shape > :not(.rs-shape) { position: relative; z-index: 1; }   /* content above the wedge */
.rs-shape {
  --rs-shape-sx: 1;
  --rs-shape-sy: 1;
  position: absolute;
  left: 0;
  right: 0;
  z-index: 0;
  overflow: hidden;
  line-height: 0;
  pointer-events: none;
  color: var(--rs-shape-color, var(--rs-tone-white));
  transform: scale(var(--rs-shape-sx), var(--rs-shape-sy));
}
.rs-shape > svg {
  display: block;
  position: relative;
  left: 50%;
  width: calc(100% + 1.3px);             /* hides sub-pixel seams */
  min-width: 100%;
  max-width: none;
  height: var(--rs-shape-h, 50px);
  transform: translateX(-50%);
  fill: currentColor;
}
.rs-shape--top { top: -1px; --rs-shape-sy: -1; }
.rs-shape--bottom { bottom: -1px; }
.rs-shape--flip-x { --rs-shape-sx: -1; }
.rs-shape--slant { --rs-shape-h: 50px; }
.rs-shape--h10 { --rs-shape-h: 10px; }
/* wedge colours = tone of the neighbouring section */
.rs-shape--on-grey { --rs-shape-color: var(--rs-tone-grey); }
.rs-shape--on-dark { --rs-shape-color: var(--rs-tone-dark); }
.rs-shape--on-deep { --rs-shape-color: var(--rs-tone-deep); }
/* fixed colours (declared after the wedge modifiers on purpose) */
.rs-shape--notch { --rs-shape-h: 30px; --rs-shape-color: var(--rs-secondary); }   /* section-devider2.png */
.rs-shape--vcut  { --rs-shape-h: 30px; --rs-shape-color: #6B7177; }               /* grey band above the footer */
.rs-shape--peaks { --rs-shape-h: 30px; --rs-shape-color: var(--rs-primary); }
@media (max-width: 767px) { .rs-shape--slant { --rs-shape-h: 30px; } }

/* ---------- 10.3 Backgrounds ------------------------------------------------- */
.rs-bg-glow {                            /* block-services.png: radial glow + 145° gradient */
  background:
    radial-gradient(circle at 12% 8%, var(--rs-primary-a14), transparent 32%),
    linear-gradient(145deg, var(--rs-charcoal-900) 0%, var(--rs-charcoal) 58%, var(--rs-charcoal-700) 100%);
  color: var(--rs-text-on-dark);
}
.rs-bg-dots { position: relative; overflow: hidden; }   /* sub-page hero dot grid (about.png, top right) */
.rs-bg-dots::after {
  content: "";
  position: absolute;
  top: 0;
  right: -8%;
  width: 55%;
  height: 70%;
  background-image: radial-gradient(var(--rs-primary-a22) 1.3px, transparent 1.3px);
  background-size: 16px 16px;
  opacity: .55;
  pointer-events: none;
}
@media (max-width: 600px) { .rs-bg-dots::after { width: 85%; opacity: .35; } }

/* ===== 11 Typography components ===== */
/* 01 § 4.5/§ 9.4/§ 9.5, 04 § 4.1, 05 § 1.2, 08 B-13/B-18. Colours come from
   the context (dark: #68AED6 accents, light: #356E8D accents). */

/* ---------- 11.1 Eyebrow + section head ----------------------------------- */
.rs-eyebrow {
  display: block;
  margin: 0 0 .85rem;
  color: var(--rs-ctx-accent);
  font-size: var(--rs-fs-label);         /* 12 px */
  font-weight: var(--rs-fw-black);
  letter-spacing: var(--rs-ls-eyebrow);
  line-height: var(--rs-lh-body);
  text-transform: uppercase;
}
.rs-eyebrow--sm { margin-bottom: .55rem; font-size: var(--rs-fs-micro); letter-spacing: var(--rs-ls-label); }
.rs-eyebrow--muted { color: var(--rs-ctx-text-muted); font-size: .7rem; letter-spacing: var(--rs-ls-label); line-height: 1.3; }

.rs-section-head { max-width: 42rem; margin-bottom: 2.75rem; }
.rs-section-head--center { margin-inline: auto; text-align: center; }
.rs-section-head__title { margin: 0 0 .9rem; text-wrap: balance; }
.rs-section-head__intro {
  max-width: 40rem;
  margin: 0;
  color: var(--rs-ctx-text-soft);
  font-size: var(--rs-fs-intro);
  line-height: var(--rs-lh-copy);
  text-wrap: pretty;
}
.rs-section-head--center .rs-section-head__intro { margin-inline: auto; }
.rs-section-head > :last-child { margin-bottom: 0; }
@media (max-width: 600px) {
  .rs-section-head { margin-bottom: 2rem; }
  .rs-section-head__intro { font-size: 1rem; }
}

/* heading group for definition / FAQ / vulnerabilities (04 § 4.1) */
.rs-heading { margin: 0; }
.rs-tagline { margin: 0 0 .75rem; color: var(--rs-ctx-heading); font-size: 1rem; font-weight: var(--rs-fw-bold); line-height: 1.6; }
.rs-tagline--accent { color: var(--rs-ctx-accent); }
.rs-headline { margin: 0 0 1.5rem; text-wrap: balance; }
@media (max-width: 767px) { .rs-headline { margin-bottom: 1.25rem; } }

/* ---------- 11.2 Kicker (step dot + label/title) -------------------------- */
.rs-kicker {
  display: grid;
  grid-template-columns: 1.75rem minmax(0, 1fr);
  align-items: center;
  gap: .75rem;
  margin: 0 0 2rem;
}
.rs-kicker > h2,
.rs-kicker > p { margin: 0; }
.rs-kicker__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: var(--rs-radius-pill);
  background: var(--rs-ctx-dot-bg);      /* light: #356E8D + white; dark: #68AED6 + ink + 5 px halo */
  box-shadow: var(--rs-ctx-dot-halo);
  color: var(--rs-ctx-dot-fg);
  line-height: 0;
}
.rs-kicker__icon > .icon { width: 1rem; height: 1rem; stroke-width: 2.5; }
.rs-kicker__text {
  color: var(--rs-ctx-accent);
  font-size: .8rem;
  font-weight: var(--rs-fw-bold);
  letter-spacing: .08em;
  line-height: 1.3;
  text-transform: uppercase;
}
.rs-kicker__title { margin: 0; color: var(--rs-ctx-heading); font-weight: var(--rs-fw-bold); text-wrap: balance; }   /* <h2><strong> renders 700 (C-72) */
.rs-kicker--inline { display: flex; align-items: center; gap: .65rem; margin: 0 0 1.25rem; }
.rs-kicker--inline .rs-kicker__text { font-size: .72rem; letter-spacing: .09em; }
.rs-kicker--center { justify-content: center; }

/* ---------- 11.3 Kicker row + badge ---------------------------------------- */
.rs-kicker-row { display: flex; flex-wrap: wrap; align-items: center; gap: .625rem; margin: 0 0 1.5rem; }
.rs-kicker-row__copy { color: var(--rs-ctx-text-muted); font-size: var(--rs-fs-meta); }
@media (max-width: 600px) { .rs-kicker-row { flex-direction: column; align-items: flex-start; } }

.rs-badge {
  display: inline-flex;
  align-items: center;
  gap: .4em;
  max-width: 100%;
  padding: .42rem .7rem;
  border: 1px solid var(--rs-primary-a48);
  border-radius: var(--rs-radius-pill);
  background: var(--rs-primary-a15);
  color: var(--rs-ctx-accent);           /* dark: #68AED6 4.95:1 on the tinted pill */
  font-size: var(--rs-fs-micro);
  font-weight: var(--rs-fw-black);
  letter-spacing: var(--rs-ls-badge);
  line-height: 1;
  text-transform: none;                  /* C-71: typed case, opt-in caps */
  white-space: nowrap;
}
.rs-badge .icon { width: 1.1em; height: 1.1em; }
.rs-badge--wrap { white-space: normal; line-height: 1.3; }
.rs-badge--caps { text-transform: uppercase; }
.rs-badge--light { border-color: var(--rs-primary-100); background: var(--rs-primary-50); color: var(--rs-secondary-ink); }
.rs-badge--danger { border-color: var(--rs-danger-border); background: var(--rs-danger-soft); color: var(--rs-danger-on-dark); }
@media (max-width: 480px) { .rs-badge { white-space: normal; line-height: 1.3; } }

/* ---------- 11.4 Display + leads ------------------------------------------- */
.rs-display {
  margin: 0 0 1.25rem;
  color: var(--rs-ctx-heading);
  font-size: var(--rs-fs-display);       /* 25 → 45 px */
  font-weight: var(--rs-fw-black);
  line-height: var(--rs-lh-display);
  text-wrap: balance;
}
.rs-display__accent { color: var(--rs-primary); }
.rs-tagline-hero {
  margin: 0 0 1.875rem;
  color: var(--rs-primary);
  font-size: var(--rs-fs-tagline);       /* 20 → 32 px */
  font-weight: var(--rs-fw-black);
  letter-spacing: var(--rs-ls-tagline);  /* 3 px */
  line-height: var(--rs-lh-display);
  text-wrap: balance;
}
.rs-hero-lead {
  display: inline-block;
  max-width: 100%;
  margin: 0 0 2.5rem;
  padding-top: 1.875rem;
  border-top: 1px solid var(--rs-primary-a40);
  color: var(--rs-text-on-dark);
  font-size: var(--rs-fs-hero-lead);     /* 18 → 20 px */
  line-height: var(--rs-lh-body);
}
.rs-lead { color: var(--rs-ctx-text-soft); font-size: var(--rs-fs-lead); line-height: var(--rs-lh-copy); }
.rs-h3-look { font-size: var(--rs-fs-h3); font-weight: var(--rs-fw-regular); line-height: var(--rs-lh-snug); }

/* sector typography (05 § 1.2) */
.rs-sector-title { margin: 0 0 1.25rem; color: var(--rs-ctx-heading); font-weight: var(--rs-fw-bold); letter-spacing: var(--rs-ls-display); line-height: 1.08; text-wrap: balance; }
.rs-sector-copy { margin: 0 0 1rem; color: var(--rs-ctx-text-muted); font-size: 1rem; line-height: 1.75; }
.rs-sector-copy--light { color: var(--rs-text-muted); }

/* ---------- 11.5 Prose ------------------------------------------------------- */
/* .rs-prose = 01 link rules + 04 measure (C-81); legal typography in --legal. */
.rs-prose { max-width: 72ch; }
.rs-prose > :first-child { margin-top: 0; }
.rs-prose > :last-child { margin-bottom: 0; }
.rs-prose h2 { margin: 2.5rem 0 1rem; text-wrap: balance; }
.rs-prose h3 { margin: 2rem 0 .75rem; }
.rs-prose h4 { margin: 1.75rem 0 .6rem; font-size: var(--rs-fs-h5); }
.rs-prose h2 + h3 { margin-top: 0; }
.rs-prose :is(h2, h3, h4)[id] { scroll-margin-top: var(--rs-scroll-offset); }
.rs-prose li + li { margin-top: .35em; }
.rs-prose img { height: auto; border-radius: var(--rs-radius-md); }
.rs-prose figure { margin: 0 0 1.5em; }
.rs-prose figcaption { margin-top: .5rem; color: var(--rs-ctx-text-muted); font-size: var(--rs-fs-meta); }
@media (max-width: 600px) { .rs-prose :is(ul, ol) { margin-left: 1.5em; } }

.rs-prose--legal { max-width: var(--rs-measure); }   /* 46 rem ≈ 75 characters (B-18) */
.rs-prose--legal h2 {
  margin: 2.5rem 0 1rem;
  font-size: var(--rs-fs-h3);
  font-weight: var(--rs-fw-black);
  line-height: 1.3;
  scroll-margin-top: var(--rs-scroll-offset);
}
.rs-prose--legal > h2:first-child { margin-top: 0; }
.rs-prose--legal h3 { margin: 1.75rem 0 .6rem; font-size: var(--rs-fs-h5); font-weight: var(--rs-fw-black); line-height: 1.4; }
.rs-prose--legal h4 { margin: 1.5rem 0 .5rem; font-size: 1rem; font-weight: var(--rs-fw-bold); line-height: 1.5; }
.rs-prose--legal :is(ul, ol) { margin: 0 0 1.5em 1.5em; padding: 0; }
.rs-prose--legal address { margin: 0 0 1.5em; font-style: normal; }
.rs-prose--legal .rs-table-wrap { margin-block: 0 1.5em; }

/* ---------- 11.6 Blockquote, callout, note --------------------------------- */
blockquote,
.rs-blockquote {
  position: relative;
  margin: 0 0 1.5em;
  padding: 1.25rem 1.5rem;
  border-left: 4px solid var(--rs-primary);
  border-radius: 0 var(--rs-radius-md) var(--rs-radius-md) 0;
  background: var(--rs-ctx-quote-bg);    /* light #F5F5F5 / dark #2A2F34 */
  color: var(--rs-ctx-text-soft);
  font-size: var(--rs-fs-lead);
  font-style: normal;
  line-height: var(--rs-lh-copy);
}
:is(blockquote, .rs-blockquote) > :last-child { margin-bottom: 0; }
:is(blockquote, .rs-blockquote) cite { display: block; margin-top: .75rem; color: var(--rs-ctx-text-muted); font-size: var(--rs-fs-meta); font-style: normal; }

.rs-callout {
  margin: 0 0 1.5em;
  padding: 1rem 1.25rem;
  border-left: 4px solid var(--rs-primary);
  border-radius: 0 var(--rs-radius-md) var(--rs-radius-md) 0;
  background: var(--rs-ctx-quote-bg);
  color: var(--rs-ctx-text-soft);
  font-size: var(--rs-fs-ui);
  line-height: 1.6;
}
.rs-callout > :last-child { margin-bottom: 0; }
.rs-callout > :is(h3, p):first-child { margin-top: 0; }
.rs-callout h3 { margin: 0 0 .5rem; color: var(--rs-ctx-heading); font-size: var(--rs-fs-h5); font-weight: var(--rs-fw-black); line-height: 1.4; }
.rs-callout p { margin: 0 0 .75em; }
.rs-callout strong { color: var(--rs-ctx-heading); }
.rs-callout--important { border-left-color: var(--rs-secondary-ink); background: var(--rs-primary-25); }
.rs-callout--warning { border-left-color: var(--rs-warning); background: rgb(var(--rs-warning-rgb) / .06); }
.rs-callout--emergency { border-left-color: var(--rs-danger); background: var(--rs-danger-soft); color: var(--rs-text); }
.rs-callout--emergency strong { color: var(--rs-text); }
.rs-on-dark .rs-callout--important,
.rs-on-dark .rs-callout--warning { background: var(--rs-charcoal-700); }

.rs-note {                               /* tinted note (box-with-text-and-video.png) */
  margin: 1.25rem 0 0;
  padding: .9rem 1rem;
  border: 1px solid var(--rs-primary-a35);
  border-radius: var(--rs-radius-7);
  background: var(--rs-primary-a08);
  color: var(--rs-ctx-text);
  font-size: var(--rs-fs-meta);
  line-height: 1.55;
}
.rs-note strong { color: var(--rs-ctx-heading); }

/* ===== 12 Buttons & links ===== */
/* 01 § 9.1 (B1–B11) + 08 B-13 corrections + contract § 5.1.3 (--danger).
   Buttons read local custom properties; variants only swap them.
   Primary fills always carry ink text (#10171C, 7.42:1) – never white. */
.rs-btn {
  --rs-btn-bg: transparent;
  --rs-btn-fg: currentColor;
  --rs-btn-bd: transparent;
  --rs-btn-bg-h: var(--rs-btn-bg);
  --rs-btn-fg-h: var(--rs-btn-fg);
  --rs-btn-bd-h: var(--rs-btn-bd);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5em;
  max-width: 100%;
  padding: .9rem 1.35rem;
  border: 1px solid var(--rs-btn-bd);
  border-radius: var(--rs-radius-sm);
  background: var(--rs-btn-bg);
  color: var(--rs-btn-fg);
  font-family: var(--rs-font);
  font-size: var(--rs-fs-body);
  font-weight: var(--rs-fw-bold);
  line-height: var(--rs-lh-body);
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition:
    background-color var(--rs-dur-form) var(--rs-ease),
    border-color var(--rs-dur-form) var(--rs-ease),
    color var(--rs-dur-form) var(--rs-ease),
    box-shadow var(--rs-dur-form) var(--rs-ease),
    transform var(--rs-dur-form) var(--rs-ease);
}
.rs-btn:hover { border-color: var(--rs-btn-bd-h); background: var(--rs-btn-bg-h); color: var(--rs-btn-fg-h); text-decoration: none; }
.rs-btn:focus-visible { outline: 3px solid var(--rs-focus); outline-offset: 3px; }
.rs-btn:disabled,
.rs-btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; transform: none; box-shadow: none; }
.rs-btn > .icon { flex: 0 0 auto; width: 1.125em; height: 1.125em; }
.rs-btn > span { min-width: 0; }

/* B1 – filled primary */
.rs-btn--solid {
  --rs-btn-bg: var(--rs-primary);
  --rs-btn-bd: var(--rs-primary);
  --rs-btn-fg: var(--rs-on-primary);
  --rs-btn-bg-h: var(--rs-primary-300);
  --rs-btn-bd-h: var(--rs-primary-300);
  --rs-btn-fg-h: var(--rs-on-primary);
}
.rs-btn--solid:hover { transform: translateY(-1px); }
.rs-btn--solid:active { border-color: var(--rs-primary-pressed); background: var(--rs-primary-pressed); transform: none; }

/* quote-button metrics (16 px Black, 52 px): .rs-btn.rs-btn--solid.rs-btn--strong */
.rs-btn--strong {
  gap: .65rem;
  min-height: 3.25rem;
  padding: .9rem 1.5rem;
  font-size: var(--rs-fs-btn);
  font-weight: var(--rs-fw-black);
  line-height: 1.2;
}
.rs-btn--strong.rs-btn--solid { box-shadow: var(--rs-shadow-btn); }

/* B6 – big full-width CTA (quote hero) */
.rs-btn--xl {
  width: 100%;
  min-height: 3.75rem;
  padding: 1rem 1.8rem;
  font-size: var(--rs-fs-lead);
  text-transform: uppercase;
}
.rs-btn--block { display: flex; width: 100%; }

/* B1c – form submit */
.rs-btn--submit {
  display: flex;
  width: 100%;
  min-height: 3rem;
  margin: 1rem 0 0;
  padding: .8rem 1.25rem;
  font-size: var(--rs-fs-ui);
  font-weight: var(--rs-fw-black);
  line-height: 1.2;
}

/* filled secondary (white text 5.58:1) */
.rs-btn--secondary {
  --rs-btn-bg: var(--rs-secondary-ink);
  --rs-btn-bd: var(--rs-secondary-ink);
  --rs-btn-fg: var(--rs-white);
  --rs-btn-bg-h: var(--rs-secondary-700);
  --rs-btn-bd-h: var(--rs-secondary-700);
  --rs-btn-fg-h: var(--rs-white);
}

/* B2 – accent outline (dark: #68AED6, light: #356E8D via context) */
.rs-btn--ghost {
  --rs-btn-bd: var(--rs-ctx-accent);
  --rs-btn-fg: var(--rs-ctx-accent);
  --rs-btn-bg-h: var(--rs-primary-a10);
  --rs-btn-bd-h: var(--rs-ctx-accent);
  --rs-btn-fg-h: var(--rs-ctx-accent-hover);
  min-height: 3rem;
  padding: .8rem 1.2rem;
  border-radius: var(--rs-radius-xs);
  font-weight: var(--rs-fw-black);
}

/* B2b – 2 px framed outline, square (home hero "So können wir helfen") */
.rs-btn--frame {
  --rs-btn-bd: var(--rs-secondary);
  --rs-btn-fg: var(--rs-white);
  --rs-btn-bd-h: var(--rs-primary);
  --rs-btn-fg-h: var(--rs-primary);
  padding: 10px 18px 11px 20px;
  border-width: 2px;
  border-radius: 0;
}
.rs-btn--frame > .icon { width: 1em; height: 1em; margin-left: .25em; }

/* B3 – neutral outline on dark */
.rs-btn--ghost-light {
  --rs-btn-bd: var(--rs-charcoal-400);
  --rs-btn-fg: var(--rs-white);
  --rs-btn-bg-h: var(--rs-white);
  --rs-btn-bd-h: var(--rs-white);
  --rs-btn-fg-h: var(--rs-charcoal);
}
/* B3a – alternative hover used in the final CTA */
.rs-btn--accent-hover,
.rs-btn--ghost-light.rs-btn--accent-hover {
  --rs-btn-bg-h: var(--rs-charcoal-700);
  --rs-btn-bd-h: var(--rs-primary);
  --rs-btn-fg-h: var(--rs-white);
}

/* B3b – white button on light sections (also wizard "Zurück", dialog tools) */
.rs-btn--light {
  --rs-btn-bg: var(--rs-white);
  --rs-btn-bd: var(--rs-grey-450);
  --rs-btn-fg: var(--rs-charcoal-900);
  --rs-btn-bg-h: var(--rs-grey-200);
  --rs-btn-bd-h: var(--rs-grey-450);
  --rs-btn-fg-h: var(--rs-charcoal-900);
}
.rs-btn--light:focus-visible { outline-color: var(--rs-secondary-ink); }

/* B8 – white button with 2 px primary border, radius 10 (blocks.png "Kontakt"); hover B-13 */
.rs-btn--outline {
  --rs-btn-bg: var(--rs-white);
  --rs-btn-bd: var(--rs-primary);
  --rs-btn-fg: var(--rs-secondary-ink);
  --rs-btn-bg-h: var(--rs-charcoal);
  --rs-btn-bd-h: var(--rs-primary);
  --rs-btn-fg-h: var(--rs-white);
  padding: .75rem 1.5rem;
  border-width: 2px;
  border-radius: var(--rs-radius-lg);
  font-size: var(--rs-fs-btn);
  white-space: nowrap;
  transition-duration: var(--rs-dur-slower);   /* "all .6s ease" */
}
.rs-on-dark .rs-btn--outline { --rs-btn-bg-h: transparent; }

/* B10/B11 – pills */
.rs-btn--pill {
  --rs-btn-bg: var(--rs-secondary-ink);
  --rs-btn-bd: var(--rs-secondary-ink);
  --rs-btn-fg: var(--rs-white);
  --rs-btn-bg-h: var(--rs-primary);
  --rs-btn-bd-h: var(--rs-primary);
  --rs-btn-fg-h: var(--rs-on-primary);
  padding: .8rem 1.4rem;
  border-radius: var(--rs-radius-pill);
  font-size: .85rem;
  line-height: 1.3;
  white-space: nowrap;
}
.rs-btn--pill-light {
  --rs-btn-bg: var(--rs-white);
  --rs-btn-bd: var(--rs-primary);
  --rs-btn-fg: var(--rs-charcoal);
  --rs-btn-bg-h: var(--rs-primary);
  --rs-btn-bd-h: var(--rs-primary);
  --rs-btn-fg-h: var(--rs-on-primary);
  padding: .9rem 1.4rem;
  border-width: 2px;
  border-radius: var(--rs-radius-pill);
  font-size: .9rem;
  line-height: 1.3;
}

/* danger – ONLY emergency actions (contract § 5.1.3); white on #C62828 = 5.62:1 */
.rs-btn--danger {
  --rs-btn-bg: var(--rs-danger);
  --rs-btn-bd: var(--rs-danger);
  --rs-btn-fg: var(--rs-on-danger);
  --rs-btn-bg-h: var(--rs-danger-hover);
  --rs-btn-bd-h: var(--rs-danger-hover);
  --rs-btn-fg-h: var(--rs-on-danger);
  box-shadow: 0 6px 18px rgb(var(--rs-danger-rgb) / .28);
}
.rs-btn--danger:active { border-color: var(--rs-danger-pressed); background: var(--rs-danger-pressed); }
/* call buttons inside emergency notices (hotline box, callouts, spam-protection notice) never take over
   the running-text link underline – in any state (QA 25.10.) */
:is(.rs-hotline, .rs-callout, .rs-form__consent, .rs-include, .rs-prose, p) a:is(.rs-btn, .rs-alarm),
:is(.rs-hotline, .rs-callout, .rs-form__consent, .rs-include, .rs-prose, p) a:is(.rs-btn, .rs-alarm):is(:hover, :focus-visible, :active) { text-decoration: none; }
.rs-btn--danger:focus-visible { outline: 3px solid var(--rs-danger-focus); outline-offset: 2px; box-shadow: 0 0 0 5px var(--rs-charcoal); }

/* B4 – "MEHR ERFAHREN →" text link: accent text stays, underline turns to heading colour (C-55) */
.rs-link-more {
  display: inline-flex;
  align-items: center;
  gap: .5em;
  padding-bottom: 10px;
  border-bottom: 1px solid currentColor;
  color: var(--rs-ctx-accent);
  font-size: var(--rs-fs-body);
  font-weight: var(--rs-fw-bold);
  letter-spacing: var(--rs-ls-caps);
  line-height: var(--rs-lh-body);
  text-transform: uppercase;
  text-decoration: none;
  transition: border-color var(--rs-dur-instant) ease-in-out, color var(--rs-dur-instant) ease-in-out;
}
.rs-link-more:hover,
.rs-link-more:focus-visible { border-bottom-color: var(--rs-ctx-heading); color: var(--rs-ctx-accent); }
.rs-link-more:focus-visible { outline: 2px solid var(--rs-focus); outline-offset: 4px; }
.rs-link-more > .icon { width: 1em; height: 1em; transition: transform var(--rs-dur-card) var(--rs-ease); }
.rs-link-more:hover > .icon { transform: translateX(3px); }

/* B5 – round arrow in a tinted circle (hover fixed: it really triggers) */
.rs-btn-round {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 44px;
  height: 44px;
  border-radius: var(--rs-radius-pill);
  background: var(--rs-primary-a15);
  color: var(--rs-ctx-accent);           /* light: #356E8D 5.16:1 on the tint */
  transition: background-color var(--rs-dur-card) var(--rs-ease), color var(--rs-dur-card) var(--rs-ease), transform var(--rs-dur-card) var(--rs-ease);
}
.rs-btn-round > .icon { width: 21px; height: 21px; }
a:hover > .rs-btn-round,
a:focus-visible > .rs-btn-round {
  background: var(--rs-primary);
  color: var(--rs-on-primary);
  transform: translateX(3px);
}

/* buttons stretch on small screens inside hero/CTA action rows (§ 1.3 small) */
@media (max-width: 600px) {
  .rs-btn--outline { white-space: normal; }
}

/* ===== 13 Lists & data ===== */
/* 01 § 9.6/9.9/9.10/9.12 + 08 B-11 (3/5/6 steps, progress layer) + contract
   § 5.1.9/5.3.15/5.3.16/5.4.3/5.4.5. */

/* ---------- 13.1 Check list -------------------------------------------------- */
.rs-checklist {
  display: flex;
  flex-direction: column;
  gap: .875rem;
  margin: 0 0 2rem;
  padding: 0;
  list-style: none;
}
.rs-checklist__item {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin: 0;
  color: var(--rs-ctx-heading);
  font-size: 1.05rem;
  font-weight: var(--rs-fw-bold);
  line-height: 1.45;
}
.rs-checklist__icon { flex: 0 0 1.125rem; width: 1.125rem; height: 1.125rem; color: var(--rs-ctx-accent); }
.rs-checklist--top .rs-checklist__item { align-items: flex-start; }
.rs-checklist--top .rs-checklist__icon { margin-top: .15em; }
.rs-checklist--plain { gap: .85rem; }
.rs-checklist--plain .rs-checklist__item { align-items: flex-start; gap: .8rem; font-size: var(--rs-fs-body); line-height: 1.5; }
.rs-checklist--plain .rs-checklist__icon { flex-basis: 1.1em; width: 1.1em; height: 1.1em; margin-top: .2em; }
.rs-checklist--inline {                  /* badges row in the headline page hero */
  flex-direction: row;
  flex-wrap: wrap;
  gap: .75rem 1.25rem;
}
.rs-checklist--inline .rs-checklist__item { font-size: var(--rs-fs-ui); }
.rs-checklist__item > span { min-width: 0; }

/* ---------- 13.2 Include box (quote hero, checklist block, emergency aside) --- */
.rs-include {
  max-width: 37rem;
  margin: 0 0 1.5rem;
  padding: 1.25rem 1.35rem;
  border: 1px solid var(--rs-primary-a55);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-primary-a06);
}
.rs-include__title {
  margin: 0 0 1rem;
  color: var(--rs-ctx-accent);
  font-size: var(--rs-fs-label);
  font-weight: var(--rs-fw-black);
  letter-spacing: .15em;
  line-height: 1.3;
  text-transform: uppercase;
}
.rs-include .rs-checklist { gap: .75rem; margin: 0; }
.rs-include .rs-checklist__item { align-items: flex-start; font-size: .975rem; }
.rs-include .rs-checklist__icon { flex-basis: 1.25rem; width: 1.25rem; height: 1.25rem; margin-top: .12rem; }
.rs-include--light {
  max-width: none;
  border-color: var(--rs-primary-a55);
  background: var(--rs-white);
  color: var(--rs-text);
}
.rs-include--light .rs-include__title { color: var(--rs-secondary-ink); }
.rs-include--light .rs-checklist__item { color: var(--rs-text); }
.rs-include--light .rs-checklist__icon { color: var(--rs-secondary); }
.rs-include--danger { border-color: var(--rs-danger-border); }
.rs-include--danger .rs-include__title,
.rs-include--danger .rs-checklist__icon { color: var(--rs-danger); }
.rs-include--danger .rs-checklist__item { font-weight: var(--rs-fw-regular); }
.rs-include--danger .rs-checklist__item strong { font-weight: var(--rs-fw-bold); }
@media (max-width: 600px) {
  .rs-include { padding: 1rem; }
  .rs-include .rs-checklist__item { font-size: .9rem; }
}

/* ---------- 13.3 Numbered scope list (media box) ------------------------------ */
.rs-scope-list { margin: .25rem 0 0; padding: 0; list-style: none; }
.rs-scope-list > li { padding: 1rem 0; border-bottom: 1px solid var(--rs-white-a12); }
.rs-scope-list__title { margin: 0 0 .4rem; font-size: var(--rs-fs-micro); line-height: var(--rs-lh-body); }   /* h3 wrapper of the label */
.rs-scope-list__num {
  display: block;
  color: var(--rs-primary);
  font-size: var(--rs-fs-micro);
  font-weight: var(--rs-fw-black);
  letter-spacing: var(--rs-ls-kicker);
  text-transform: uppercase;
}
.rs-scope-list p { margin: 0; color: var(--rs-text-on-dark-body); font-size: var(--rs-fs-small); line-height: 1.55; }

/* ---------- 13.4 Chevron list ------------------------------------------------- */
.rs-list-chevron { margin: 0; padding: 0; list-style: none; }
.rs-list-chevron li {
  position: relative;
  margin: 0 0 .65rem;
  padding-left: 1rem;
  color: var(--rs-ctx-heading);
  font-size: .88rem;
  font-weight: var(--rs-fw-bold);
  line-height: 1.45;
}
.rs-list-chevron li::before { content: "›"; position: absolute; left: 0; top: -.1rem; color: var(--rs-ctx-accent); font-size: 1.1rem; }

/* ---------- 13.5 Contact list (/kontakt/) ------------------------------------- */
.rs-contact-list { display: grid; gap: 1.1rem; margin: 2rem 0; padding: 0; list-style: none; }
.rs-contact-list__item { display: flex; align-items: flex-start; gap: .85rem; margin: 0; line-height: 1.55; }
.rs-contact-list__item > .icon { flex: none; width: 20px; height: 20px; margin-top: .2rem; color: var(--rs-secondary); }
.rs-contact-list__item > div { min-width: 0; }
.rs-contact-list__label {
  display: block;
  margin-bottom: .1rem;
  color: var(--rs-text-muted);
  font-size: var(--rs-fs-label);
  font-weight: var(--rs-fw-black);
  letter-spacing: .08em;
  line-height: 1.4;
  text-transform: uppercase;
}
.rs-contact-list__item address { margin: 0; font-style: normal; }
.rs-contact-list__item a { color: var(--rs-text); font-weight: var(--rs-fw-bold); text-decoration: none; }
.rs-contact-list__item a:hover,
.rs-contact-list__item a:focus-visible { color: var(--rs-secondary-ink); text-decoration: underline; text-underline-offset: .2em; }
.rs-contact-list__item--address > .icon { margin-top: .25rem; }

/* ---------- 13.6 Stats -------------------------------------------------------- */
.rs-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); max-width: 34rem; margin: 0; }
.rs-stat { display: flex; flex-direction: column; min-width: 0; margin: 0; padding: 0 1.5rem; }
.rs-stat:first-child { padding-left: 0; }
.rs-stat + .rs-stat { border-left: 1px solid var(--rs-ctx-rule); }
.rs-stat__value {
  order: -1;
  margin: 0;
  color: var(--rs-ctx-heading);
  font-size: var(--rs-fs-stat);
  font-weight: var(--rs-fw-bold);
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;               /* long German values („Prüfbescheinigung“) never overflow: */
  hyphens: auto;                         /* hyphenated where the browser can, broken as a last resort */
}
.rs-stat__label { margin: .2rem 0 0; color: var(--rs-ctx-text-muted); font-size: var(--rs-fs-label); line-height: 1.35; }
.rs-stats--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); max-width: 46rem; }
.rs-stats--band {                        /* stats band section: centred, larger values */
  max-width: none;
  text-align: center;
}
.rs-stats--band .rs-stat { container-type: inline-size; align-items: center; padding: .25rem .75rem; }
.rs-stats--band .rs-stat:first-child { padding-left: .75rem; }
.rs-stats--band .rs-stat + .rs-stat { border-left-color: var(--rs-grey-400); }
.rs-stats--band .rs-stat__value {        /* 40 px, scaled down with the cell so a long word stays on one line */
  color: var(--rs-secondary-ink);
  font-size: clamp(1.75rem, 11.5cqi, 2.5rem);
  font-weight: var(--rs-fw-black);
}
.rs-stats--band .rs-stat__label { margin-top: .45rem; color: var(--rs-text-muted); font-size: var(--rs-fs-small); line-height: 1.45; }
@media (max-width: 1024px) {             /* band: 2 × 2 before the cells get too narrow for long values */
  .rs-stats--band { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 1.5rem; }
  .rs-stats--band .rs-stat:nth-child(odd) { border-left: 0; }
}
@media (max-width: 768px) {
  .rs-stats--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 1.5rem; }
  .rs-stats--4 .rs-stat:nth-child(odd) { padding-left: 0; border-left: 0; }
}
@media (max-width: 600px) {
  .rs-stat { padding: 0 .75rem; }
  .rs-stat__value { font-size: 1.4rem; }
  .rs-stat__label { font-size: .68rem; }
  .rs-stats--band .rs-stat__label { font-size: var(--rs-fs-label); }
}
@media (max-width: 480px) {              /* band: one value per row, rules turn horizontal */
  .rs-stats--band { grid-template-columns: minmax(0, 1fr); row-gap: 0; }
  .rs-stats--band .rs-stat,
  .rs-stats--band .rs-stat:first-child { padding: 1rem 0; border-left: 0; }
  .rs-stats--band .rs-stat + .rs-stat { border-top: 1px solid var(--rs-grey-400); }
}

/* ---------- 13.7 Process steps (counts.png) + progress layer (B-11) ----------- */
.rs-steps {
  --rs-steps-cols: 4;
  display: grid;
  grid-template-columns: repeat(var(--rs-steps-cols), minmax(0, 1fr));
  gap: 2.5rem 1.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: rs-step;
}
.rs-steps--3,
.rs-steps--6 { --rs-steps-cols: 3; }
.rs-steps--5 { --rs-steps-cols: 5; }
@media (max-width: 1100px) { .rs-steps--5 { --rs-steps-cols: 3; } }
@media (max-width: 900px)  { .rs-steps, .rs-steps--3, .rs-steps--5, .rs-steps--6 { --rs-steps-cols: 2; } }
@media (max-width: 600px)  { .rs-steps, .rs-steps--3, .rs-steps--5, .rs-steps--6 { --rs-steps-cols: 1; } }
.rs-step {
  position: relative;
  min-width: 0;
  margin: 0;
  padding-top: 1.35rem;
  border-top: 2px solid var(--rs-ctx-border);   /* dark: #464C52 */
}
.rs-step--active { border-top-color: var(--rs-ctx-accent); }
.rs-step::before {                       /* progress bar on the 2 px rule (main.js initSteps) */
  content: "";
  position: absolute;
  inset: -2px 0 auto;
  height: 2px;
  background: var(--rs-ctx-accent);
  transform: scaleX(0);
  transform-origin: left center;
}
.rs-step--active::before,
.rs-step.is-active::before { transform: scaleX(1); }
.steps-ready .rs-step--active { border-top-color: var(--rs-ctx-border); }          /* the bar takes over */
.steps-ready .rs-step--active:not(.is-active)::before { transform: scaleX(0); }
.steps-ready .rs-step::before { transition: transform 500ms var(--rs-ease-out); }
.rs-step__number {
  display: block;
  margin-bottom: .7rem;
  color: var(--rs-ctx-accent);
  font-size: var(--rs-fs-label);
  font-weight: var(--rs-fw-black);
  letter-spacing: var(--rs-ls-kicker);
  line-height: 1.6;
}
.rs-step__title { margin: 0 0 .6rem; color: var(--rs-ctx-heading); }
.rs-step__copy { margin: 0; color: var(--rs-ctx-text); font-size: var(--rs-fs-ui); line-height: var(--rs-lh-copy); }

/* ---------- 13.8 Tables --------------------------------------------------------- */
.rs-table-wrap {
  overflow-x: auto;
  margin: 0 0 1.5em;
  border: 1px solid var(--rs-grey-300);
  border-radius: var(--rs-radius-lg);
}
.rs-table-wrap:focus-visible { outline: 2px solid var(--rs-focus); outline-offset: 2px; }
.rs-table {
  width: 100%;
  min-width: 34rem;
  margin: 0;
  border-collapse: collapse;
  font-size: var(--rs-fs-ui);
  line-height: 1.5;
}
.rs-table caption {
  padding: .75rem 1rem;
  color: var(--rs-text-muted);
  font-size: var(--rs-fs-meta);
  text-align: left;
  caption-side: bottom;
}
.rs-table th,
.rs-table td { padding: .75rem 1rem; border-bottom: 1px solid var(--rs-grey-300); text-align: left; vertical-align: top; }
.rs-table thead th {
  background: var(--rs-charcoal);
  color: var(--rs-white);
  font-size: var(--rs-fs-meta);
  font-weight: var(--rs-fw-black);
  letter-spacing: .08em;
  text-transform: uppercase;
}
.rs-table tbody tr:nth-child(even) { background: var(--rs-grey); }
.rs-table tbody tr:last-child > * { border-bottom: 0; }
.rs-table tbody th { font-weight: var(--rs-fw-bold); }
@media (max-width: 600px) { .rs-table { min-width: 28rem; } }

/* ===== 14 Cards & tiles ===== */
/* 01 § 9.7/9.8 (C1–C12), 08 B-10 icon cards, 05 § 6 hub/industry cards,
   contract § 5.3.25 partner logos. */

/* ---------- 14.1 Icon tile --------------------------------------------------- */
.rs-icon-tile {
  --rs-tile-size: 40px;
  --rs-tile-icon: 21px;
  --rs-tile-radius: var(--rs-radius-sm);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--rs-tile-size);
  height: var(--rs-tile-size);
  border-radius: var(--rs-tile-radius);
  background: var(--rs-primary-50);
  color: var(--rs-secondary-700);       /* 6.99:1 on #EAF4FA */
  line-height: 0;
}
.rs-icon-tile > .icon { width: var(--rs-tile-icon); height: var(--rs-tile-icon); }
.rs-icon-tile--bordered { --rs-tile-radius: var(--rs-radius-7); --rs-tile-icon: 20px; border: 1px solid var(--rs-primary-a16); }
.rs-icon-tile--lg {
  --rs-tile-size: 3.75rem;
  --rs-tile-icon: 1.75rem;
  --rs-tile-radius: var(--rs-radius-lg);
  border: 1px solid var(--rs-primary-100);
  color: var(--rs-secondary-ink);
}
.rs-icon-tile--solid { border-color: var(--rs-primary); background: var(--rs-primary); color: var(--rs-on-primary); }
.rs-icon-tile--dark {
  --rs-tile-size: 3.25rem;
  --rs-tile-icon: 1.6rem;
  --rs-tile-radius: var(--rs-radius-icon);
  border: 1px solid var(--rs-primary-a32);
  background: var(--rs-primary-a18);
  color: var(--rs-primary);
  transition: background-color var(--rs-dur-card) var(--rs-ease), color var(--rs-dur-card) var(--rs-ease), transform var(--rs-dur-card) var(--rs-ease);
}
.rs-icon-tile--dark.rs-icon-tile--lg {
  --rs-tile-size: 3.75rem;
  --rs-tile-icon: 2rem;
  --rs-tile-radius: var(--rs-radius-lg);
  border-color: var(--rs-primary-a30);
  background: var(--rs-primary-a13);
}
@media (max-width: 768px) { .rs-icon-tile:not(.rs-icon-tile--dark):not(.rs-icon-tile--lg) { --rs-tile-size: 36px; --rs-tile-icon: 19px; } }
@media (max-width: 600px) { .rs-icon-tile--lg { --rs-tile-size: 3.25rem; --rs-tile-icon: 1.5rem; } }

/* ---------- 14.2 C1 light card with accent top (boxes.png) -------------------- */
.rs-card {
  position: relative;
  min-width: 0;
  padding: clamp(1.4rem, 3vw, 2rem);
  border: 1px solid var(--rs-grey-400);
  border-top: 3px solid var(--rs-primary);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-white);
}
.rs-card__kicker {
  display: block;
  margin: 0 0 .7rem;
  color: var(--rs-secondary-ink);
  font-size: var(--rs-fs-micro);
  font-weight: var(--rs-fw-black);
  letter-spacing: var(--rs-ls-label);
  line-height: 1.4;
  text-transform: uppercase;
}
.rs-card__title { margin: 0 0 .75rem; }
.rs-card__copy { margin: 0 0 1rem; color: var(--rs-text-soft); line-height: var(--rs-lh-copy); }
.rs-card__list { display: grid; gap: .55rem; margin: 0; padding-left: 1.2rem; color: var(--rs-text-soft); line-height: 1.55; }
.rs-card__list > li { padding-left: .15rem; }
.rs-card__list > li::marker { color: var(--rs-secondary); }

/* ---------- 14.3 C2 dark panel (affects.png) --------------------------------- */
.rs-panel {
  min-width: 0;
  padding: clamp(1.5rem, 3vw, 2.25rem);
  border: 1px solid var(--rs-line-dark);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-charcoal-700);
  color: var(--rs-text-on-dark);
}
.rs-panel--accent { border-top: 3px solid var(--rs-primary); padding-top: calc(clamp(1.5rem, 3vw, 2.25rem) - 2px); }   /* titles of both panels stay level */
.rs-panel__title { margin: 0 0 .8rem; color: var(--rs-ctx-heading); }
.rs-panel__copy { margin: 0 0 1.2rem; color: var(--rs-ctx-text); line-height: var(--rs-lh-copy); }
.rs-panel__copy > :last-child { margin-bottom: 0; }
.rs-panel__list { display: grid; gap: .7rem; margin: 0; padding-left: 1.2rem; color: var(--rs-text-on-dark-strong); line-height: 1.55; }
.rs-panel__list strong { color: var(--rs-ctx-heading); }
.rs-review-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  margin-top: 2rem;
  padding-top: 2rem;
  border-top: 1px solid var(--rs-ctx-rule);
}
.rs-review-row p { max-width: 48rem; margin: 0; color: var(--rs-ctx-text); line-height: var(--rs-lh-copy); }
.rs-review-row strong { color: var(--rs-ctx-accent); }
.rs-review-row .rs-btn { flex: 0 0 auto; }
@media (max-width: 768px) { .rs-review-row { flex-direction: column; align-items: stretch; gap: 1.25rem; } }

/* ---------- 14.4 C3 dark service card (block-services.png) -------------------- */
.rs-service-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
  gap: 1.25rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
@media (max-width: 1024px) { .rs-service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px)  { .rs-service-grid { grid-template-columns: minmax(0, 1fr); } }
.rs-service-card {
  position: relative;
  display: grid;
  grid-template-columns: 3.25rem minmax(0, 1fr);
  grid-template-rows: auto 1fr;
  column-gap: 1rem;
  row-gap: 1.35rem;
  height: 100%;
  min-height: 15.625rem;
  margin: 0;
  overflow: hidden;
  padding: 1.85rem;
  border: 1px solid var(--rs-white-a13);
  border-top: 4px solid var(--rs-primary);
  border-radius: var(--rs-radius-2xl);
  background: var(--rs-charcoal-700);
  box-shadow: var(--rs-shadow-dark);
  color: var(--rs-white);
  transition: background-color var(--rs-dur-card) var(--rs-ease), border-color var(--rs-dur-card) var(--rs-ease), box-shadow var(--rs-dur-card) var(--rs-ease), transform var(--rs-dur-card) var(--rs-ease);
}
.rs-service-card > .rs-icon-tile { grid-column: 1; grid-row: 1; align-self: center; }
.rs-service-card__title {
  grid-column: 2;
  grid-row: 1;
  align-self: center;
  margin: 0;
  color: var(--rs-white);
  font-size: var(--rs-fs-h3);
  font-weight: var(--rs-fw-bold);
  letter-spacing: -.015em;
  line-height: 1.28;
}
.rs-service-card__title a { color: inherit; text-decoration: none; }
.rs-service-card__title a::after { content: ""; position: absolute; inset: 0; z-index: 2; }   /* whole card clickable */
.rs-service-card__title a:focus-visible { outline: 0; }
.rs-service-card__text { grid-column: 1 / -1; grid-row: 2; margin: 0; color: var(--rs-text-on-dark-body); font-size: .94rem; line-height: 1.7; }
.rs-service-card:not(.rs-service-card--static):hover {
  border-color: var(--rs-primary);
  background: var(--rs-charcoal-650);
  box-shadow: var(--rs-shadow-dark-hover);
  transform: translateY(-5px);
}
.rs-service-card:not(.rs-service-card--static):focus-within { border-color: var(--rs-primary); box-shadow: var(--rs-shadow-dark-focus); }
.rs-service-card:not(.rs-service-card--static):hover .rs-icon-tile--dark {
  background: var(--rs-primary);
  color: var(--rs-on-primary);
  transform: rotate(-3deg) scale(1.04);
}
@media (max-width: 560px) { .rs-service-card { min-height: 0; } }

/* ---------- 14.5 C4 vulnerability card (blocks.png) ----------------------------- */
.rs-vuln-card {
  position: relative;
  height: 100%;
  min-width: 0;
  margin: 0;
  padding: 1.5rem;
  border-bottom: .3em solid var(--rs-charcoal);
  border-radius: var(--rs-radius-notch) 0 var(--rs-radius-notch) 0;   /* TL + BR → the dark stroke curves up at the right */
  background: var(--rs-grey-200);
  box-shadow: var(--rs-shadow-notch);
  color: var(--rs-text);
}
.rs-vuln-card__title {
  display: flex;
  align-items: center;
  gap: .5em;
  margin: 0 0 .5rem;
  color: var(--rs-text);
  font-size: var(--rs-fs-card-title);
  font-weight: var(--rs-fw-bold);
  line-height: 1.45;
}
.rs-vuln-card__title > .icon { flex: 0 0 1em; width: 1em; height: 1em; color: var(--rs-charcoal); }
.rs-vuln-card__text { margin: 0; font-size: 1rem; line-height: 1.6; }
@media (max-width: 767px) {
  .rs-vuln-card { padding: 1.25rem; }
  .rs-vuln-card__text { font-size: var(--rs-fs-body); }
}

/* ---------- 14.6 C5 home feature cards (overlap the hero) ---------------------- */
/* Values of the client-approved design preview (spec/10 item 2: "Hero-Karten exakt so
   übernehmen"): 112 px overlap, 56 px gutter, 23 px/900 titles, 16 px copy. */
.rs-feature-grid {
  position: relative;
  z-index: 10;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 40px 56px;
  margin-top: -112px;
}
.rs-feature-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 0;
  min-height: 372px;
  margin: 0;
  padding: 34px 30px 30px;
  border-top: 3px solid var(--rs-secondary);
  background: linear-gradient(180deg, var(--rs-grey) 0%, var(--rs-white) 100%);
  color: var(--rs-text);
  text-align: center;
}
.rs-feature-card__icon { flex: none; width: 58px; height: 58px; margin: 0 auto 18px; color: var(--rs-secondary); stroke-width: 1.5; }
.rs-feature-card__title {
  margin: 0 0 16px;
  color: var(--rs-text);
  font-size: 1.4375rem;                  /* 23 px */
  font-weight: var(--rs-fw-black);
  letter-spacing: -.01em;
  line-height: 1.25;
}
.rs-feature-card__text { margin: 0; color: var(--rs-text-soft); font-size: 1rem; line-height: 1.65; }
.rs-feature-card__link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-top: auto;
  padding-top: 20px;
  color: var(--rs-secondary-ink);
  font-weight: var(--rs-fw-black);
  text-decoration: none;
  transition: color var(--rs-dur-fast) ease;
}
.rs-feature-card__link .icon { width: 1rem; height: 1rem; stroke-width: 2.25; transition: transform var(--rs-dur-fast) ease; }
.rs-feature-card__link:hover { color: var(--rs-secondary-800); }
.rs-feature-card__link:hover .icon { transform: translateX(3px); }
.rs-feature-card__link:focus-visible { outline: 2px solid var(--rs-secondary-ink); outline-offset: 3px; border-radius: 2px; }
@media (max-width: 1024px) {
  .rs-feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
}
@media (max-width: 767px) {
  .rs-feature-grid { grid-template-columns: minmax(0, 1fr); gap: 24px; margin-top: -84px; }
  .rs-feature-card { min-height: 0; }
  .rs-feature-card__icon { width: 52px; height: 52px; }
}

/* ---------- 14.7 C6 link strip + link card with round arrow (counts.png) ------- */
.rs-link-strip {
  padding: 2rem var(--rs-gutter);
  border-bottom: 1px solid var(--rs-border-light);
}
.rs-link-strip__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
  max-width: var(--rs-container-module);
  margin: 0 auto;
  padding: 0;
  list-style: none;
}
.rs-link-strip__grid > li { display: flex; min-width: 0; }
.rs-link-strip__grid > li > * { flex: 1 1 auto; min-width: 0; }
@media (min-width: 1025px) { .rs-link-strip__grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 768px) {
  .rs-link-strip { padding-block: 1.5rem; }
  .rs-link-strip__grid { grid-template-columns: minmax(0, 1fr); }
}
.rs-link-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  min-height: 116px;
  padding: 1.35rem 1.5rem;
  border: 1px solid var(--rs-border-light);
  border-top: 4px solid var(--rs-primary);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-white);
  box-shadow: var(--rs-shadow-card);
  color: var(--rs-text);
  text-decoration: none;
  transition: border-color var(--rs-dur-card) var(--rs-ease), box-shadow var(--rs-dur-card) var(--rs-ease), transform var(--rs-dur-card) var(--rs-ease);
}
.rs-link-card:hover { border-color: var(--rs-primary); box-shadow: var(--rs-shadow-card-hover); color: var(--rs-text); transform: translateY(-3px); }
.rs-link-card:focus-visible { outline: 0; border-color: var(--rs-primary); box-shadow: 0 0 0 3px var(--rs-secondary-ink); }
.rs-link-card__body { min-width: 0; }
.rs-link-card__eyebrow {
  display: block;
  margin: 0 0 .45rem;
  color: var(--rs-secondary-ink);
  font-size: .7rem;
  font-weight: var(--rs-fw-black);
  letter-spacing: .1em;
  line-height: 1.3;
  text-transform: uppercase;
}
.rs-link-card__label { display: block; color: var(--rs-text); font-size: clamp(1rem, 1.8vw, 1.2rem); font-weight: var(--rs-fw-black); line-height: 1.3; }
@media (max-width: 768px) { .rs-link-card { min-height: 104px; padding: 1.2rem; } }

/* ---------- 14.8 C12 soft light card ------------------------------------------- */
.rs-card-soft {
  padding: 1.5rem;
  border: 1px solid var(--rs-border-light);
  border-radius: var(--rs-radius-xl);
  background: var(--rs-white);
  box-shadow: var(--rs-shadow-card-soft);
}

/* ---------- 14.9 Icon cards (cards icons / services; B-10) --------------------- */
.rs-icon-cards { --rs-gap: 1.25rem; }
.rs-icon-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .9rem;
  min-width: 0;
  height: 100%;
  margin: 0;
  padding: 1.5rem;
  border: 1px solid var(--rs-border-light);
  border-radius: var(--rs-radius-xl);
  background: var(--rs-white);
  box-shadow: var(--rs-shadow-card-soft);
  color: var(--rs-text);
  text-decoration: none;
}
.rs-icon-card__title { margin: 0; color: var(--rs-text); font-size: var(--rs-fs-card-title); font-weight: var(--rs-fw-bold); line-height: 1.3; }
.rs-icon-card__text { margin: 0; color: var(--rs-text-muted); font-size: 1rem; line-height: var(--rs-lh-copy); }
.rs-icon-card__more {
  display: inline-flex;
  align-items: center;
  gap: .4em;
  margin-top: auto;
  padding-top: .25rem;
  color: var(--rs-secondary-ink);
  font-size: var(--rs-fs-ui);
  font-weight: var(--rs-fw-bold);
}
.rs-icon-card__more .icon { transition: transform var(--rs-dur-card) var(--rs-ease); }
a.rs-icon-card { transition: border-color var(--rs-dur-card) var(--rs-ease), box-shadow var(--rs-dur-card) var(--rs-ease), transform var(--rs-dur-card) var(--rs-ease); }
a.rs-icon-card:hover { border-color: var(--rs-primary); box-shadow: var(--rs-shadow-card-hover); color: var(--rs-text); transform: translateY(-3px); }
a.rs-icon-card:hover .rs-icon-card__more { text-decoration: underline; text-underline-offset: .2em; }
a.rs-icon-card:hover .rs-icon-card__more .icon { transform: translateX(3px); }
a.rs-icon-card:focus-visible { outline: 3px solid var(--rs-focus); outline-offset: 3px; }

/* ---------- 14.10 Why card (dark card on white; 05 § 6.1) ---------------------- */
.rs-why-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-width: 0;
  min-height: 100%;
  margin: 0;
  padding: clamp(1.5rem, 3vw, 2.25rem) clamp(1.35rem, 2.5vw, 1.75rem);
  border: 1px solid var(--rs-white-a12);
  border-top: 3px solid var(--rs-primary);
  border-radius: var(--rs-radius-xl);
  background: var(--rs-charcoal-700);
  box-shadow: var(--rs-shadow-dark-soft);
}
.rs-why-card > .rs-icon-tile { margin-bottom: 1.375rem; }
.rs-why-card__title { margin: 0 0 .75rem; color: var(--rs-white); }
.rs-why-card__copy { margin: 0; color: var(--rs-text-on-dark-strong); font-size: 1rem; line-height: var(--rs-lh-copy); }
@media (max-width: 1024px) { .rs-why-card { padding: 1.75rem 1.5rem; } }
@media (max-width: 600px) { .rs-why-card { padding: 1.5rem 1.25rem; } .rs-why-card > .rs-icon-tile { margin-bottom: 1.125rem; } }

/* ---------- 14.11 Industry card (05 § 6.2) -------------------------------------- */
.rs-industry-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  height: 100%;
  min-height: 250px;
  overflow: hidden;
  padding: 1.85rem;
  border: 1px solid var(--rs-white-a13);
  border-top: 4px solid var(--rs-primary);
  border-radius: var(--rs-radius-2xl);
  background: var(--rs-charcoal-700);
  box-shadow: var(--rs-shadow-dark);
  color: var(--rs-white);
  text-decoration: none;
  transition: background-color var(--rs-dur-card) var(--rs-ease), border-color var(--rs-dur-card) var(--rs-ease), box-shadow var(--rs-dur-card) var(--rs-ease), transform var(--rs-dur-card) var(--rs-ease);
}
.rs-industry-card > .rs-icon-tile { --rs-tile-size: 54px; --rs-tile-icon: 27px; margin-bottom: 1.35rem; }
.rs-industry-card__title { margin: 0 0 .65rem; color: var(--rs-white); font-size: var(--rs-fs-h4); font-weight: var(--rs-fw-black); line-height: var(--rs-lh-snug); }
.rs-industry-card__text { margin: 0 0 1.25rem; color: var(--rs-text-on-dark-body); font-size: .9rem; line-height: 1.6; }
.rs-industry-card__link {
  display: inline-flex;
  align-items: center;
  gap: .35em;
  margin-top: auto;
  color: var(--rs-primary);
  font-size: var(--rs-fs-meta);
  font-weight: var(--rs-fw-black);
  line-height: var(--rs-lh-snug);
}
.rs-industry-card__link .icon { transition: transform var(--rs-dur-card) var(--rs-ease); }
.rs-industry-card:hover {
  border-color: var(--rs-primary);
  background: var(--rs-charcoal-650);
  box-shadow: var(--rs-shadow-dark-hover);
  color: var(--rs-white);
  transform: translateY(-5px);
}
.rs-industry-card:hover .rs-icon-tile--dark { background: var(--rs-primary); color: var(--rs-on-primary); transform: rotate(-3deg) scale(1.04); }
.rs-industry-card:hover .rs-industry-card__link .icon { transform: translateX(3px); }
.rs-industry-card:focus-visible { outline: 0; border-color: var(--rs-primary); box-shadow: 0 0 0 3px var(--rs-primary-a55); }
@media (max-width: 1024px) { .rs-industry-card { min-height: 235px; } }
@media (max-width: 768px) { .rs-industry-card { min-height: 0; } }
@media (max-width: 480px) { .rs-industry-card { padding: 1.5rem; } }

/* ---------- 14.12 Benefit cards + challenge cards (05 § 6.4/6.5) ---------------- */
.rs-benefit-cards { display: grid; gap: .75rem; margin: 0; padding: 0; list-style: none; }
.rs-benefit-card {
  display: flex;
  align-items: flex-start;
  gap: .8rem;
  margin: 0;
  padding: 1rem 1.1rem;
  border: 1px solid var(--rs-border-light);
  border-radius: .6rem;
  background: var(--rs-white);
}
.rs-benefit-card__check {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  margin-top: .1rem;
  border-radius: var(--rs-radius-pill);
  background: var(--rs-primary-a12);
  color: var(--rs-secondary-700);
}
.rs-benefit-card__check > .icon { width: 1rem; height: 1rem; }
.rs-benefit-card__body { display: grid; gap: .4rem; min-width: 0; }
.rs-benefit-card__title { margin: 0; color: var(--rs-text); font-size: .95rem; font-weight: var(--rs-fw-bold); line-height: var(--rs-lh-snug); }
.rs-benefit-card__text { margin: 0; color: var(--rs-text-muted); font-size: .875rem; line-height: 1.55; }

.rs-challenge { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; margin: 0; }
.rs-challenge > .rs-icon-tile { margin-bottom: 1rem; }
.rs-challenge__label {
  display: block;
  margin-bottom: .8rem;
  color: var(--rs-secondary-ink);
  font-size: .7rem;
  font-weight: var(--rs-fw-bold);
  letter-spacing: .08em;
  text-transform: uppercase;
}
.rs-challenge__title { margin: 0 0 .65rem; color: var(--rs-text); font-size: 1.15rem; font-weight: var(--rs-fw-bold); line-height: var(--rs-lh-snug); }
.rs-challenge__text { margin: 0; color: var(--rs-text-muted); font-size: .94rem; line-height: var(--rs-lh-copy); }

/* ---------- 14.13 Partner logos (optional; § 5.3.25) ----------------------------- */
.rs-partner-logos { display: flex; flex-wrap: wrap; gap: 1rem; margin: 0; padding: 0; list-style: none; }
.rs-partner-logos__item { display: flex; min-width: 0; max-width: 100%; margin: 0; }
.rs-partner-logos__link {
  display: flex;
  align-items: center;
  justify-content: center;
  max-width: 100%;
  padding: 4rem;                         /* protection zone = 2 × logo height */
  border: 1px solid var(--rs-ctx-border);
  border-radius: var(--rs-radius-md);
  background: var(--rs-ctx-bg);
  color: var(--rs-ctx-heading);
  text-decoration: none;
  transition: border-color var(--rs-dur-card) var(--rs-ease), box-shadow var(--rs-dur-card) var(--rs-ease);
}
.rs-partner-logos__link:hover { border-color: var(--rs-primary); box-shadow: var(--rs-shadow-card); }   /* hover only on the tile frame – never on the logo */
.rs-partner-logos__img { display: block; width: auto; max-width: 100%; height: 2rem; object-fit: contain; }
.rs-partner-logos__name { font-size: var(--rs-fs-lg); font-weight: var(--rs-fw-black); line-height: 2rem; }
@media (max-width: 480px) {
  .rs-partner-logos__link { padding: 3rem; }
  .rs-partner-logos__img { height: 1.5rem; }
  .rs-partner-logos__name { line-height: 1.5rem; }
}

/* ===== 15 Media ===== */
/* 01 § 9.16 video box + 08 B-12/B-13 (illustration slot, 2-click facade),
   contract § 5.3.2 (CSS-only visuals) and § 5.3.17 report (04 § 5.10, B-9). */

/* ---------- 15.1 Media section wrappers ---------------------------------------- */
.rs-media { display: flow-root; }       /* no own padding – the box brings its margins (kept inside) */
.rs-media--box { padding: 5rem 1.5rem 6rem; background: var(--rs-charcoal); }   /* = 05 .rs-quote-watch */
@media (max-width: 600px) { .rs-media--box { padding: 3.5rem 1rem 4.5rem; } }

/* ---------- 15.2 Video block (video-block.png) ---------------------------------- */
.rs-video {
  display: grid;
  grid-template-columns: minmax(min(18rem, 100%), .8fr) minmax(0, 1.2fr);
  align-items: center;
  gap: clamp(2rem, 5vw, 4rem);
  width: calc(100% - 3rem);
  max-width: var(--rs-container);
  margin: clamp(2rem, 4vw, 3.5rem) auto;
  padding: clamp(1.5rem, 4vw, 3rem);
  border-top: 4px solid var(--rs-primary);
  background: var(--rs-charcoal);
  color: var(--rs-text-on-dark-soft);
}
.rs-video__copy { min-width: 0; max-width: 34rem; }
.rs-video .rs-eyebrow { margin-bottom: .8rem; letter-spacing: var(--rs-ls-label); }
.rs-video__title { margin: 0 0 1rem; color: var(--rs-white); }
.rs-video__text { margin: 0; color: var(--rs-text-on-dark-soft); line-height: var(--rs-lh-relaxed); }
.rs-video__text > p { margin: 0 0 1em; }
.rs-video__text > :last-child { margin-bottom: 0; }
.rs-video .rs-btn--ghost { margin-top: 1.5rem; }
.rs-video__figure { min-width: 0; margin: 0; }
.rs-video__embed {
  position: relative;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  background: var(--rs-charcoal-950);
  box-shadow: var(--rs-shadow-embed);
}
.rs-video__embed > img,
.rs-video__embed > iframe,
.rs-video__embed > video,
.rs-video__embed > .rs-video__media {   /* image slot + the element initVideoFacades inserts */
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}
.rs-video__embed > img { object-fit: contain; }
.rs-video__embed > video,
.rs-video__embed > video.rs-video__media { object-fit: contain; background: var(--rs-charcoal-950); }
.rs-video__embed--image { background: var(--rs-charcoal-900); box-shadow: none; }
.rs-video__embed--pattern,
.rs-video__embed--terminal,
.rs-video__embed--report { background: var(--rs-charcoal-950); }
.rs-video__caption { margin: .75rem 0 0; color: var(--rs-text-on-dark-subtle); font-size: .82rem; line-height: 1.5; }

/* 2-click facade (06 hooks + 01 visuals): poster button, 72 px play circle, notice */
.rs-video__poster {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: var(--rs-charcoal-950);
  cursor: pointer;
}
.rs-video__poster > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: .85;
  transition: opacity var(--rs-dur-card) var(--rs-ease);
}
.rs-video__play {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: var(--rs-primary);
  box-shadow: var(--rs-shadow-btn);
  color: var(--rs-on-primary);
  transition: transform var(--rs-dur-card) var(--rs-ease), background-color var(--rs-dur-card) var(--rs-ease);
}
.rs-video__play > .icon { width: 28px; height: 28px; margin-left: 4px; }
.rs-video__poster:hover > img { opacity: 1; }
.rs-video__poster:hover .rs-video__play { background: var(--rs-primary-300); transform: scale(1.05); }
.rs-video__poster:focus-visible { outline: 3px solid var(--rs-primary); outline-offset: -3px; }
.rs-video__notice {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  margin: 0;
  padding: .5rem .75rem;
  background: rgb(var(--rs-black-rgb) / .6);
  color: var(--rs-text-on-dark-strong);
  font-size: var(--rs-fs-label);
  line-height: 1.45;
  text-align: left;
}
.rs-video__notice a { color: var(--rs-primary-200); text-decoration: underline; text-underline-offset: .15em; }
.is-playing > .rs-video__notice { display: none; }
@media (max-width: 850px) {
  .rs-video { grid-template-columns: minmax(0, 1fr); }
  .rs-video__copy { max-width: 44rem; }
}
@media (max-width: 600px) {
  .rs-video { gap: 1.5rem; width: calc(100% - 2 * var(--rs-gutter)); margin: 2rem auto; padding: 1.25rem; }   /* centred */
  .rs-video .rs-btn--ghost { width: 100%; }
  .rs-video__play { width: 56px; height: 56px; }
  .rs-video__play > .icon { width: 22px; height: 22px; }
}

/* ---------- 15.3 Video box with step list (box-with-text-and-video.png) ---------- */
.rs-video-box {
  display: grid;
  grid-template-columns: minmax(0, .88fr) minmax(0, 1.12fr);
  align-items: center;
  gap: clamp(2rem, 4vw, 3.5rem);
  max-width: var(--rs-container-wide);
  margin: 0 auto;
  padding: clamp(1.5rem, 3vw, 2rem);
  border: 1px solid var(--rs-line-dark);
  border-radius: var(--rs-radius-2xl);
  background: var(--rs-charcoal-900);
  box-shadow: var(--rs-shadow-video);
}
.rs-video-box__copy { min-width: 0; }
.rs-video-box__copy .rs-eyebrow { margin-bottom: .55rem; letter-spacing: var(--rs-ls-eyebrow); }
.rs-video-box__title { margin: 0 0 .55rem; color: var(--rs-white); }
.rs-video-box__intro { margin: 0 0 .25rem; color: var(--rs-text-on-dark-body); font-size: var(--rs-fs-ui); line-height: 1.55; }
.rs-video-box__intro > p { margin: 0 0 .75em; }
.rs-video-box__intro > :last-child { margin-bottom: 0; }
.rs-video-box .rs-note { margin-top: 1.25rem; }
.rs-video-box__copy > .rs-btn { margin-top: 1.5rem; }
.rs-video-box .rs-video__embed { border: 1px solid var(--rs-line-dark); border-radius: var(--rs-radius-lg); box-shadow: none; }
@media (max-width: 1024px) { .rs-video-box { grid-template-columns: minmax(0, 1fr); max-width: var(--rs-container-narrow); } }
@media (max-width: 600px) { .rs-video-box { padding: 1.25rem; } .rs-video-box__copy > .rs-btn { width: 100%; } }

/* ---------- 15.4 CSS-only visuals for the 16:9 slot (no photos) ------------------ */
.rs-media-visual { position: absolute; inset: 0; overflow: hidden; }
/* pattern: dot grid fading out from the centre + radar rings (spec/02 25.10.: no world map) */
.rs-media-visual--pattern {
  background:
    radial-gradient(ellipse at 50% 120%, var(--rs-primary-a14), transparent 60%),
    linear-gradient(160deg, var(--rs-charcoal-900), var(--rs-charcoal-950));
}
.rs-media-visual--pattern::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle, var(--rs-primary) 1.1px, transparent 1.7px) 50% 50% / 16px 16px;
  opacity: .24;
  -webkit-mask-image: radial-gradient(circle at 50% 50%, #000 0, rgb(0 0 0 / .5) 36%, transparent 72%);
          mask-image: radial-gradient(circle at 50% 50%, #000 0, rgb(0 0 0 / .5) 36%, transparent 72%);
}
.rs-media-visual--pattern::after {      /* two concentric rings + accent dot */
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 50%, var(--rs-primary) 0 5px, var(--rs-primary-a35) 6px 8px, transparent 9px),
    radial-gradient(circle at 50% 50%, transparent 0 13%, var(--rs-primary-a55) calc(13% + 1px) calc(13% + 2px), transparent calc(13% + 3px)),
    radial-gradient(circle at 50% 50%, transparent 0 25%, var(--rs-primary-a24) calc(25% + 1px) calc(25% + 2px), transparent calc(25% + 3px));
}
/* terminal: dark window with three dots, monospace, primary prompt line */
.rs-media-visual--terminal { display: grid; place-items: center; padding: clamp(.75rem, 3vw, 1.5rem); background: var(--rs-charcoal-900); }
.rs-terminal {
  width: 100%;
  max-height: 100%;
  overflow: hidden;
  border: 1px solid var(--rs-line-dark);
  border-radius: var(--rs-radius-md);
  background: var(--rs-charcoal-950);
  box-shadow: var(--rs-shadow-embed);
}
.rs-terminal__bar {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: .55rem .8rem;
  border-bottom: 1px solid var(--rs-line-dark);
  background: var(--rs-charcoal-700);
}
.rs-terminal__bar > span:not(.rs-terminal__title) { flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--rs-charcoal-400); }
.rs-terminal__bar > span:first-child { background: var(--rs-primary); }
.rs-terminal__title {
  margin-left: .5rem;
  overflow: hidden;
  color: var(--rs-text-on-dark-muted);
  font-family: var(--rs-font-mono);
  font-size: var(--rs-fs-label);
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rs-terminal__body {
  margin: 0;
  padding: .9rem 1rem 1.1rem;
  overflow: hidden;
  border-radius: 0;
  background: transparent;
  color: var(--rs-text-on-dark-soft);
  font-family: var(--rs-font-mono);
  font-size: clamp(.75rem, .65rem + .4vw, .875rem);   /* 12 → 14 px */
  line-height: 1.6;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.rs-terminal__body::first-line { color: var(--rs-primary); }
.rs-terminal__body code { padding: 0; background: none; color: inherit; font-size: inherit; }
/* report: centred wordmark */
.rs-media-visual--report {
  display: grid;
  place-items: center;
  padding: 1rem;
  background:
    radial-gradient(circle at 50% 50%, var(--rs-primary-a10), transparent 65%),
    var(--rs-charcoal-900);
}

/* ---------- 15.5 Report teaser (portal.png; 04 § 5.10 + B-9) -------------------- */
.rs-report {
  position: relative;
  padding: clamp(4.5rem, 8vw, 7rem) clamp(1.25rem, 4vw, 2.5rem);
  background: var(--rs-charcoal);
  color: var(--rs-white);
}
.rs-report__grid {
  display: grid;
  grid-template-columns: minmax(0, 46fr) minmax(0, 54fr);
  align-items: center;
  column-gap: 72px;
  row-gap: 40px;
  max-width: var(--rs-container);
  margin: 0 auto;
}
.rs-report__visual {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  row-gap: 1.75rem;
  min-width: 0;
  min-height: 360px;
  margin: 0;
  padding: clamp(2rem, 5vw, 4rem) clamp(1.5rem, 5vw, 4rem);
  border: 1px solid var(--rs-line-dark);
  border-bottom: 3px solid var(--rs-primary);
  border-radius: var(--rs-radius-3xl);
  background: var(--rs-charcoal-900);
  box-shadow: var(--rs-shadow-portal);
}
.rs-report__visual-label {
  display: flex;
  align-items: center;
  justify-content: center;
  column-gap: .65rem;
  margin: 0;
  color: var(--rs-text-on-dark-soft);
  font-size: var(--rs-fs-meta);
  font-weight: var(--rs-fw-bold);
  letter-spacing: .09em;
  line-height: 1.4;
  text-align: center;
  text-transform: uppercase;
}
.rs-report__visual-label::before { content: ""; flex: 0 0 auto; width: .58em; height: .58em; border-radius: 50%; background: var(--rs-primary); }
/* CSS-only "ROOTSEKTOR REPORT" wordmark (B-9) – never "ROOTS3KT0R" in text */
.rs-report__mark {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: .55rem;
  max-width: 100%;
  padding: .9rem 1.5rem 1rem;
  border: 3px solid var(--rs-white);
  color: var(--rs-white);
  line-height: 1;
  text-align: center;
  text-transform: uppercase;
}
.rs-report__mark-title {
  font-size: clamp(1.5rem, .9rem + 2vw, 2.6rem);   /* ≈ 24 → 41.6 px */
  font-weight: var(--rs-fw-black);
  letter-spacing: .06em;
}
.rs-report__mark-sub {
  padding-left: .62em;                    /* balances the trailing letter-spacing */
  color: var(--rs-primary);
  font-size: clamp(1rem, .7rem + 1vw, 1.55rem);
  font-weight: var(--rs-fw-bold);
  letter-spacing: .62em;
}
.rs-media-visual--report .rs-report__mark { padding: .7rem 1.2rem .8rem; }
.rs-media-visual--report .rs-report__mark-title { font-size: clamp(1.25rem, .8rem + 1.6vw, 2.2rem); }
.rs-media-visual--report .rs-report__mark-sub { font-size: clamp(.85rem, .6rem + .8vw, 1.3rem); }
.rs-report__copy { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
.rs-report__eyebrow {
  margin: 0 0 .9rem;
  color: var(--rs-primary);
  font-size: var(--rs-fs-meta);
  font-weight: var(--rs-fw-bold);
  letter-spacing: var(--rs-ls-kicker);
  line-height: 1.5;
  text-transform: uppercase;
}
.rs-report__title { margin: 0 0 1.25rem; color: var(--rs-white); text-wrap: balance; }
.rs-report__text { margin: 0 0 1.75rem; color: var(--rs-text-on-dark-soft); font-size: var(--rs-fs-lead); line-height: 1.7; }
.rs-report__text > p { margin: 0 0 1em; }
.rs-report__text > :last-child { margin-bottom: 0; }
.rs-report__list {
  display: flex;
  flex-direction: column;
  row-gap: .85rem;
  width: 100%;
  margin: 0 0 2rem;
  padding: 0;
  list-style: none;
}
.rs-report__list li { display: flex; align-items: flex-start; column-gap: .8rem; color: var(--rs-white); font-weight: var(--rs-fw-bold); line-height: 1.5; }
.rs-report__list .icon { flex: 0 0 auto; width: 1.1em; height: 1.1em; margin-top: .2em; color: var(--rs-primary); stroke-width: 2.5; }
.rs-report__actions { display: flex; flex-wrap: wrap; gap: .85rem; }
.rs-report--band { padding-block: clamp(5.5rem, 9vw, 8rem); }     /* room for the 50 px slants (home) */
@media (max-width: 1024px) {
  .rs-report__grid { grid-template-columns: minmax(0, 1fr); max-width: var(--rs-container-narrow); }
  .rs-report__visual { min-height: 300px; }
}
@media (max-width: 767px) { .rs-report__visual { min-height: 240px; } }
@media (max-width: 600px) { .rs-report__actions .rs-btn { width: 100%; } }

/* ===== 16 Disclosure ===== */
/* Process tabs (05 § 6.7 + 06 tabs contract), FAQ (01 § 9.14 + 05 § 12.1
   bridge + B-13: one implementation), contents box (04 § 5.2 + B-20). */

/* ---------- 16.1 Process tabs (industry pages) ---------------------------------- */
.rs-ptabs { display: flex; flex-direction: column; gap: 20px; margin-top: 1.5rem; }
.rs-ptabs__list {
  display: flex;
  justify-content: space-between;
  gap: .25rem;
  margin: 0;
  padding: 0;
  overflow-x: auto;
  border-bottom: 1px solid var(--rs-border-light);
  scrollbar-width: thin;
}
/* pre-JS state = post-JS default (06): with JS, show the bar and only the first panel */
html.js [data-tabs]:not(.tabs--ready) > [role="tablist"][hidden] { display: flex !important; }
html.js [data-tabs]:not(.tabs--ready) > [role="tabpanel"] ~ [role="tabpanel"] { display: none; }
.rs-ptabs__tab {
  display: inline-flex;
  flex: 1 0 auto;
  align-items: center;
  justify-content: center;
  gap: .55em;
  min-height: 3rem;
  margin: 0;
  padding: .9rem 1rem;
  border: 0;
  border-bottom: 3px solid transparent;
  background: transparent;
  color: var(--rs-text-muted);           /* 5.41:1 */
  font-family: var(--rs-font);
  font-size: .88rem;
  font-weight: var(--rs-fw-bold);
  line-height: 1.3;
  white-space: nowrap;
  cursor: pointer;
  transition: color var(--rs-dur-fast) var(--rs-ease), border-color var(--rs-dur-fast) var(--rs-ease);
}
.rs-ptabs__num { color: var(--rs-secondary); font-size: var(--rs-fs-label); font-weight: var(--rs-fw-black); letter-spacing: var(--rs-ls-kicker); }
.rs-ptabs__tab:hover { color: var(--rs-secondary-ink); }
.rs-ptabs__tab[aria-selected="true"] { border-bottom-color: var(--rs-primary); color: var(--rs-secondary-ink); }
.rs-ptabs__tab[aria-selected="true"] .rs-ptabs__num { color: var(--rs-secondary-ink); }
.rs-ptabs__tab:focus-visible { outline: 3px solid var(--rs-focus); outline-offset: -3px; }
.rs-ptabs__panel {
  position: relative;
  min-height: 0;                         /* panels without image: one column */
  padding: clamp(1.5rem, 4vw, 2.5rem);
  border: 1px solid var(--rs-grey-300);
  border-radius: var(--rs-radius-xl);
  background: linear-gradient(180deg, var(--rs-primary-25) 0%, var(--rs-white) 100%);
}
.rs-ptabs__panel:focus-visible { outline: 2px solid var(--rs-focus); outline-offset: 2px; }
.rs-ptabs__body { position: relative; max-width: 50rem; padding-right: clamp(0rem, 8vw, 6rem); }
.rs-ptabs__step {                        /* large step number, top right */
  position: absolute;
  top: -.35rem;
  right: 0;
  color: var(--rs-primary-a35);
  font-size: 3.5rem;
  font-weight: var(--rs-fw-black);
  line-height: 1;
  pointer-events: none;
}
.rs-ptabs__title { margin: 0 0 .9rem; color: var(--rs-text); font-size: clamp(1.4rem, 2.3vw, 2rem); font-weight: var(--rs-fw-bold); line-height: 1.2; }
.rs-ptabs__body > .rs-sector-copy:last-child { margin-bottom: 0; }
.rs-ptabs__panel .rs-list-chevron { margin: 1.25rem 0 0; columns: 2; column-gap: 2rem; }
.rs-ptabs__panel .rs-list-chevron li { break-inside: avoid; }
@media (max-width: 767px) {
  .rs-ptabs__list { justify-content: flex-start; }
  .rs-ptabs__body { padding-right: 0; padding-top: 2.75rem; }
  .rs-ptabs__step { top: -.25rem; right: auto; left: 0; font-size: 2.5rem; }
}
@media (max-width: 560px) { .rs-ptabs__panel .rs-list-chevron { columns: 1; } }

/* ---------- 16.2 FAQ section + accordion ----------------------------------------- */
.rs-faq-section__grid { display: flex; align-items: center; column-gap: 5rem; row-gap: 3rem; }
.rs-faq-section__intro,
.rs-faq-section__grid > .rs-faq { flex: 1 1 50%; min-width: 0; }
.rs-faq-section__intro > :last-child { margin-bottom: 0; }
.rs-faq-section__intro .rs-lead { margin: 0 0 1.25rem; }
.rs-faq-section__more { margin: 0; color: var(--rs-ctx-text-soft); font-size: var(--rs-fs-ui); line-height: 1.6; }
.rs-faq-section__more a:not(.rs-btn) { color: var(--rs-ctx-link); font-weight: var(--rs-fw-bold); white-space: nowrap; }
@media (max-width: 1024px) { .rs-faq-section__grid { flex-direction: column; align-items: stretch; } }

.rs-faq { margin: 0; padding: 2em 0; }
.rs-faq__item {
  margin: 0 0 15px;
  border: 2px solid var(--rs-secondary-700);
  border-radius: var(--rs-radius-md);
  background: var(--rs-white);
}
.rs-faq__item:last-child { margin-bottom: 0; }
.rs-faq__q {
  position: relative;
  display: block;
  padding: 20px 65px 20px 20px;
  border-radius: 6px;                    /* 8 px outer radius − 2 px border */
  color: var(--rs-text);
  font-size: var(--rs-fs-card-title);
  font-weight: var(--rs-fw-bold);
  line-height: 1.6;
  list-style: none;
  cursor: pointer;
  transition: background-color var(--rs-dur-base) var(--rs-ease);
}
.rs-faq__q::-webkit-details-marker { display: none; }
.rs-faq__q::marker { content: ""; }
.rs-faq__q::after {                      /* one plus/minus indicator (gradient bars) */
  content: "";
  position: absolute;
  top: 50%;
  right: 25px;
  width: 25px;
  height: 25px;
  border: 2px solid currentColor;
  border-radius: 50%;
  color: var(--rs-secondary-700);
  background:
    linear-gradient(currentColor, currentColor) center / 11px 2px no-repeat,
    linear-gradient(currentColor, currentColor) center / 2px 11px no-repeat;
  transform: translateY(-50%);
}
.rs-faq__item[open]:not([data-closing]) > .rs-faq__q::after { background: linear-gradient(currentColor, currentColor) center / 11px 2px no-repeat; }
.rs-faq__q:hover { background: var(--rs-grey-200); }
.rs-faq__item[open] > .rs-faq__q { background: var(--rs-grey-200); border-radius: 6px 6px 0 0; }
.rs-faq__q:focus-visible { outline: 3px solid var(--rs-focus); outline-offset: 2px; }
.rs-faq__a { margin: 0; padding: 0; }   /* animated element: no padding/margin (05 § 12.1) */
.rs-faq__a-inner { padding: 20px; color: var(--rs-text-soft); line-height: var(--rs-lh-copy); }
.rs-faq__a-inner > :last-child { margin-bottom: 0; }
.rs-faq__a-inner :is(ul, ol) { margin-left: 1.5em; }
[data-accordion] { --accordion-duration: var(--rs-dur-accordion); --accordion-easing: ease; }
[data-accordion].rs-faq { --accordion-duration: var(--rs-dur-faq); --accordion-easing: var(--rs-ease-swing); }   /* jQuery 400 ms swing */
@media (max-width: 767px) {
  .rs-faq__q { padding: 18px 58px 18px 18px; font-size: var(--rs-fs-lead); }
  .rs-faq__q::after { right: 18px; }
  .rs-faq__a-inner { padding: 18px; }
}

/* ---------- 16.3 Contents box (sub-page with index.png; one per page) -------------- */
.rs-toc {
  position: relative;
  justify-self: center;
  width: 100%;
  max-width: 280px;
  margin: 32px auto;
  padding: 16px 18px;                    /* the 10 px band sits inside the padding (B-20) */
  border-left: 4px solid var(--rs-primary);
  border-bottom: 3px solid var(--rs-secondary);
  border-radius: var(--rs-radius-sm);
  background: var(--rs-charcoal);
  color: var(--rs-white);
}
.rs-toc__notch {
  position: absolute;
  top: -1px;
  left: 0;
  right: 0;
  overflow: hidden;
  line-height: 0;
  pointer-events: none;
  color: var(--rs-secondary);
  transform: scaleY(-1);
}
.rs-toc__notch svg {
  display: block;
  position: relative;
  left: 50%;
  width: calc(100% + 1.3px);
  min-width: 100%;
  max-width: none;
  height: 10px;
  transform: translateX(-50%);
  fill: currentColor;
}
.rs-toc__title { position: relative; margin: 0 0 .5rem; color: var(--rs-white); font-size: var(--rs-fs-card-title); font-weight: var(--rs-fw-regular); line-height: 1.6; }
.rs-toc__toggle { display: none; }
.rs-toc__list { margin: 0; padding: 0; list-style: none; }
.rs-toc__list li { margin: 0; padding: 8px 0; border-bottom: 1px solid var(--rs-white-a08); }
.rs-toc__list li:last-child { border-bottom: 0; }
.rs-toc__list a {
  display: block;
  padding: 2px 0;
  color: var(--rs-text-on-dark-strong);
  font-size: var(--rs-fs-small);
  font-weight: var(--rs-fw-regular);
  line-height: 1.4;
  text-decoration: none;
  transition: color var(--rs-dur-base) var(--rs-ease), padding-left var(--rs-dur-base) var(--rs-ease);
}
.rs-toc__list a:hover,
.rs-toc__list a:focus-visible,
.rs-toc__list a[aria-current],
.rs-toc__list a.is-active { padding-left: 6px; color: var(--rs-primary); }
.rs-toc__list a[aria-current],
.rs-toc__list a.is-active { font-weight: var(--rs-fw-bold); }
.rs-toc__list a:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: 2px; }
@media (max-width: 768px) {              /* phones: disclosure instead of hiding (B-20) */
  .rs-toc { max-width: none; margin: 0; }
  .rs-toc.is-enhanced .rs-toc__title { display: none; }
  .rs-toc.is-enhanced .rs-toc__toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    min-height: 44px;
    padding: 0;
    border: 0;
    background: none;
    color: var(--rs-white);
    font-family: var(--rs-font);
    font-size: var(--rs-fs-card-title);
    line-height: 1.6;
    text-align: left;
    cursor: pointer;
  }
  .rs-toc__toggle .icon { width: 1rem; height: 1rem; color: var(--rs-primary); transition: transform var(--rs-dur-base) var(--rs-ease); }
  .rs-toc.is-open .rs-toc__toggle .icon { transform: rotate(180deg); }
  .rs-toc.is-enhanced:not(.is-open) .rs-toc__list { display: none; }
  .rs-toc.is-enhanced.is-open .rs-toc__list { margin-top: .5rem; }
}

/* ===== 17 Forms ===== */
/* One form system: 01 § 9.3 classes + 05 § 11 states + 08 B-14 (light card,
   field helpers, spam-protection consent) + contract § 7.3 markup.
   Colours come from the context tokens --rs-input-*, --rs-label-c, --rs-error-c,
   --rs-success-c (dark card by default, light inside .rs-form-card--light). */

/* ---------- 17.1 Form card ------------------------------------------------------- */
.rs-form-card {
  position: relative;
  z-index: 2;
  min-width: 0;
  padding: clamp(1.5rem, 3vw, 2rem);
  border: 1px solid var(--rs-line-dark);
  border-top: 2px solid var(--rs-primary);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-charcoal-700);
  box-shadow: var(--rs-shadow-panel);
  color: var(--rs-text-on-dark-body);
}
.rs-form-card > .rs-eyebrow { margin-bottom: .55rem; }
.rs-form-card__title {
  margin: 0 0 .35rem;
  color: var(--rs-ctx-heading);
  font-size: var(--rs-fs-h2);
  font-weight: var(--rs-fw-black);
  line-height: var(--rs-lh-snug);
  scroll-margin-top: calc(var(--rs-scroll-offset) + 2rem);   /* the anchor is the heading – keep the card frame visible */
  text-wrap: balance;
}
.rs-form-card__intro { margin: 0 0 1.25rem; color: var(--rs-ctx-text-muted); font-size: var(--rs-fs-small); line-height: 1.5; }
.rs-form-card__intro a:not(.rs-btn) { color: var(--rs-ctx-link); font-weight: var(--rs-fw-bold); }
.rs-form-card--light {                  /* B-14 – colours are set in section 05 */
  border: 1px solid var(--rs-grey-400);
  border-top: 3px solid var(--rs-primary);
  background: var(--rs-white);
  box-shadow: var(--rs-shadow-card-soft);
}
.rs-form-card--emergency { border-top: 3px solid var(--rs-danger); }
@media (max-width: 600px) { .rs-form-card { padding: 1.25rem; } }

/* ---------- 17.2 Grid, fields, labels ---------------------------------------------- */
.rs-form { position: relative; }
.rs-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: .75rem; }
.rs-form__field { display: grid; align-content: start; gap: .35rem; min-width: 0; margin: 0 0 .75rem; }
.rs-form__field--full,
.rs-form__group,
.rs-form__checks,
.rs-form__consent,
.rs-form__noscript,
.rs-form__privacy,
.rs-form__recaptcha,
.rs-form__actions,
.rs-form__status { grid-column: 1 / -1; }
@media (max-width: 600px) { .rs-form__grid { grid-template-columns: minmax(0, 1fr); } }

.rs-form__label {
  display: block;
  margin: 0;
  padding: 0;
  color: var(--rs-label-c);
  font-size: var(--rs-fs-label);         /* 12 px / 700 (visible labels instead of placeholders) */
  font-weight: var(--rs-fw-bold);
  letter-spacing: .01em;
  line-height: 1.35;
}
.rs-form__required-note { margin: 0 0 1.25rem; color: var(--rs-ctx-text-muted); font-size: var(--rs-fs-meta); line-height: 1.5; }
.rs-form__help { margin: .1rem 0 0; color: var(--rs-ctx-text-muted); font-size: var(--rs-fs-meta); line-height: 1.5; }
.rs-form__error { margin: .1rem 0 0; color: var(--rs-error-c); font-size: var(--rs-fs-label); font-weight: var(--rs-fw-bold); line-height: 1.45; }
.rs-form__field.is-invalid > .rs-form__label,
.rs-form__group.is-invalid > .rs-form__label,
[data-field].is-invalid > .rs-form__label { color: var(--rs-error-c); }

/* ---------- 17.3 Controls ---------------------------------------------------------- */
.rs-form__control {
  display: block;
  width: 100%;
  min-height: 2.75rem;                   /* 44 px */
  margin: 0;
  padding: .7rem .8rem;
  appearance: none;
  border: 1px solid var(--rs-input-border);
  border-radius: var(--rs-radius-sm);
  background-color: var(--rs-input-bg);
  box-shadow: none;
  color: var(--rs-input-fg);
  font-family: var(--rs-font);
  font-size: 1rem;                       /* 16 px on touch devices: prevents iOS zoom */
  line-height: 1.4;
  transition: background-color var(--rs-dur-form) var(--rs-ease), border-color var(--rs-dur-form) var(--rs-ease), box-shadow var(--rs-dur-form) var(--rs-ease);
}
@media (min-width: 769px) and (hover: hover) { .rs-form__control { font-size: var(--rs-fs-small); } }
.rs-form__control::placeholder { color: var(--rs-input-placeholder); opacity: 1; }
.rs-form__control:hover { border-color: var(--rs-ctx-accent); }
.rs-form__control:focus {
  outline: none;
  border-color: var(--rs-primary);
  background-color: var(--rs-input-bg-focus);
  box-shadow: var(--rs-ring-input);
}
.rs-form__control:focus-visible { outline: 2px solid var(--rs-focus); outline-offset: 2px; }
.rs-form__control[aria-invalid="true"],
.was-validated .rs-form__control:invalid { border-color: var(--rs-error-c); }
.rs-form__control:disabled { opacity: .6; cursor: not-allowed; }
textarea.rs-form__control { min-height: 6.5rem; resize: vertical; }
select.rs-form__control {
  padding-right: 2.5rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239AA1A6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .8rem center;
  background-size: 1rem;
  cursor: pointer;
}
.rs-form-card--light select.rs-form__control,
.rs-wizard select.rs-form__control,
.rs-on-light select.rs-form__control {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23646B71' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
}
select.rs-form__control option { background: var(--rs-white); color: var(--rs-text); }
input[type="number"].rs-form__control { -moz-appearance: textfield; }
input[type="date"].rs-form__control { min-height: 2.75rem; }
input[type="search"].rs-form__control::-webkit-search-cancel-button { cursor: pointer; }
.rs-form__control--mono { font-family: var(--rs-font-mono); letter-spacing: .02em; }

/* input with unit suffix (NDA tool) */
.rs-input-group { display: flex; align-items: center; gap: .6rem; }
.rs-input-group > .rs-form__control { flex: 0 1 8rem; min-width: 0; }
.rs-input-group__suffix { color: var(--rs-text-muted); font-size: var(--rs-fs-ui); line-height: 1.4; }

/* ---------- 17.4 Checkboxes, radios, groups -------------------------------------- */
.rs-form__checks { margin: .25rem 0 .35rem; }
.rs-form__check {
  display: flex;
  align-items: flex-start;
  gap: .55rem;
  margin: 0 0 .45rem;
  color: var(--rs-label-c);
  font-size: var(--rs-fs-meta);
  line-height: 1.45;
  cursor: pointer;
}
.rs-form__check input[type="checkbox"],
.rs-form__check input[type="radio"] { flex: 0 0 auto; width: 1.0625rem; height: 1.0625rem; margin: .08rem 0 0; accent-color: var(--rs-primary); cursor: pointer; }
.rs-form__check input:focus-visible { outline: 2px solid var(--rs-focus); outline-offset: 2px; }
.rs-form__check a:not(.rs-btn) { color: var(--rs-ctx-link); text-decoration: underline; text-underline-offset: .15em; }
.rs-form__checks > .rs-form__error { margin-left: 1.6rem; }

.rs-form__group { min-width: 0; margin: 0 0 .75rem; padding: 0; border: 0; }   /* fieldset reset */
.rs-form__group > legend.rs-form__label { float: left; width: 100%; margin: 0 0 .5rem; }  /* float: legend behaves like a label */
.rs-form__group > legend + * { clear: both; }
.rs-form__group > .rs-form__error { clear: both; }

.rs-fieldset { min-width: 0; margin: 0 0 1.75rem; padding: 0; border: 0; }
.rs-fieldset__legend {
  display: block;
  float: left;
  width: 100%;
  margin: 0 0 .5rem;
  padding: 0;
  color: var(--rs-ctx-heading);
  font-size: var(--rs-fs-card-title);
  font-weight: var(--rs-fw-bold);
  line-height: 1.3;
}
.rs-fieldset__legend + * { clear: both; }
.rs-fieldset__hint { margin: 0 0 1rem; color: var(--rs-ctx-text-muted); font-size: var(--rs-fs-small); line-height: 1.5; }

.rs-choice-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: .55rem; margin: 0; padding: 0; list-style: none; }
.rs-choice-list--inline { display: flex; flex-wrap: wrap; gap: .55rem 1.5rem; }
.rs-choice {
  display: flex;
  align-items: flex-start;
  gap: .6rem;
  min-width: 0;
  color: var(--rs-label-c);
  font-size: var(--rs-fs-ui);
  line-height: 1.45;
  overflow-wrap: anywhere;                 /* long option texts („Management/Schwachstellenmanagement“) never widen the form at 320 px */
  hyphens: auto;
  cursor: pointer;
}
.rs-choice input { flex: 0 0 auto; width: 1.125rem; height: 1.125rem; margin: .12rem 0 0; accent-color: var(--rs-primary); cursor: pointer; }
.rs-choice input:focus-visible { outline: 2px solid var(--rs-focus); outline-offset: 2px; }
.rs-form-card .rs-choice-list--inline .rs-choice { font-size: var(--rs-fs-small); }

/* ---------- 17.5 Notes: privacy, reCAPTCHA, consent, noscript, after ----------------- */
.rs-form__privacy { margin: .25rem 0 0; color: var(--rs-ctx-text-muted); font-size: var(--rs-fs-label); line-height: 1.5; }
.rs-form__privacy a:not(.rs-btn),
.rs-form__recaptcha a:not(.rs-btn) { color: var(--rs-ctx-link); text-decoration: underline; text-underline-offset: .15em; }
.rs-form__recaptcha { margin: .5rem 0 0; color: var(--rs-ctx-text-muted); font-size: var(--rs-fs-label); line-height: 1.5; }
.grecaptcha-badge { visibility: hidden !important; }   /* allowed because .rs-form__recaptcha shows the notice (spec/02) */

.rs-form__consent {                       /* just-in-time spam-protection consent (B-14) */
  display: grid;
  gap: .65rem;
  margin: .25rem 0 .75rem;
  padding: .9rem 1rem;
  border: 1px solid var(--rs-primary-a35);
  border-radius: var(--rs-radius-7);
  background: var(--rs-primary-a08);
  color: var(--rs-ctx-text);
  font-size: var(--rs-fs-meta);
  line-height: 1.55;
}
html[data-consent-recaptcha="granted"] .rs-form__consent { display: none; }
.rs-form__consent p { margin: 0; }
.rs-form__consent strong { color: var(--rs-ctx-heading); }
.rs-form__consent a:not(.rs-btn) { color: var(--rs-ctx-link); text-decoration: underline; text-underline-offset: .15em; }
.rs-form__consent .rs-btn { justify-self: start; }
.rs-form__consent-title { font-size: var(--rs-fs-ui); }
.rs-form__consent--emergency { border-color: var(--rs-danger-border); background: var(--rs-danger-soft); }
.rs-on-dark .rs-form__consent--emergency,
.rs-form-card:not(.rs-form-card--light) .rs-form__consent--emergency { background: rgb(var(--rs-danger-rgb) / .16); }
.rs-form__consent--emergency .rs-btn--block { justify-self: stretch; margin-top: .15rem; }
.rs-form__noscript {
  margin: .25rem 0 .75rem;
  padding: .9rem 1rem;
  border: 1px solid var(--rs-ctx-border);
  border-left: 4px solid var(--rs-warning-on-dark);
  border-radius: var(--rs-radius-7);
  color: var(--rs-ctx-text);
  font-size: var(--rs-fs-meta);
  line-height: 1.55;
}
.rs-form-card--light .rs-form__noscript,
.rs-on-light .rs-form__noscript { border-left-color: var(--rs-warning); }
.rs-form__noscript a:not(.rs-btn) { color: var(--rs-ctx-link); text-decoration: underline; }
.rs-form__after { margin: 1.25rem 0 0; padding-top: 1rem; border-top: 1px solid var(--rs-ctx-rule); color: var(--rs-ctx-text-soft); font-size: var(--rs-fs-small); line-height: 1.55; }
.rs-form__after a:not(.rs-btn) { color: var(--rs-ctx-link); font-weight: var(--rs-fw-bold); }

/* honeypot (off-screen, not display:none so bots still fill it) */
.rs-form__hp,
[data-honeypot] {
  position: absolute !important;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* ---------- 17.6 Actions, spinner, status -------------------------------------------- */
.rs-form__actions { display: flex; flex-direction: column; align-items: stretch; }
.rs-form__actions .rs-spinner { align-self: center; }
.rs-spinner {                            /* CF7 parity: 24 px disc, 6 px dot, 1000 ms (C-65) */
  position: relative;
  display: inline-block;
  flex: none;
  width: 24px;
  height: 24px;
  margin: .75rem auto 0;
  border-radius: 50%;
  background: rgb(35 40 45 / .75);
  vertical-align: middle;
  visibility: hidden;
}
.rs-spinner::before {
  content: "";
  position: absolute;
  top: 4px;
  left: 4px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #FBFBFC;
  transform-origin: 8px 8px;
  animation: rs-spin 1000ms linear infinite;
}
.rs-on-dark .rs-spinner,
.rs-form-card:not(.rs-form-card--light) .rs-spinner { background: var(--rs-primary); }
.rs-on-dark .rs-spinner::before,
.rs-form-card:not(.rs-form-card--light) .rs-spinner::before { background: var(--rs-on-primary); }
[data-state="submitting"] .rs-spinner,
[aria-busy="true"] .rs-spinner { visibility: visible; }
.rs-form[data-state="submitting"] [type="submit"],
.rs-form[aria-busy="true"] [type="submit"] { cursor: progress; opacity: .8; transform: none; }

.rs-form__status {
  margin: 1rem 0 0;
  padding: .75rem .9rem;
  border: 1px solid var(--rs-primary);
  border-left-width: 4px;
  border-radius: var(--rs-radius-sm);
  color: var(--rs-ctx-text);
  font-size: var(--rs-fs-meta);
  line-height: 1.55;
}
.rs-form__status:empty { display: none; }
.rs-form__status:focus { outline: 2px solid var(--rs-focus); outline-offset: 2px; }
.rs-form__status[data-tone="submitting"] { border-color: var(--rs-ctx-border); }
.rs-form__status[data-tone="success"] { border-color: var(--rs-success-c); }
.rs-form__status[data-tone="invalid"],
.rs-form__status[data-tone="consent"],
.rs-form__status[data-tone="error"] { border-color: var(--rs-error-c); }
.rs-form__status-text { margin: 0; }
.rs-form__reference { margin: .5rem 0 0; }
.rs-form__reference-code {
  font-family: var(--rs-font-mono);
  font-size: 1.05em;
  font-weight: var(--rs-fw-bold);
  letter-spacing: .04em;
  color: var(--rs-ctx-heading);
  white-space: nowrap;
}
.rs-form[data-state="success"] .rs-form__status { font-size: var(--rs-fs-ui); }
/* success replaces the form (05 § 11.3): hide everything but the status + the required note */
.rs-form[data-success="replace"][data-state="success"] .rs-form__grid > :not(.rs-form__status),
.rs-form[data-success="replace"][data-state="success"] > .rs-form__required-note,
.rs-form[data-success="replace"][data-state="success"] > .rs-form__after { display: none; }
.rs-form[data-success="replace"][data-state="success"] .rs-form__status { margin-top: 0; }

/* ---------- 17.7 Error summary (wizard + no-JS error page) ----------------------------- */
.rs-error-summary {
  margin: 0 0 1.5rem;
  padding: 1rem 1.25rem;
  border: 2px solid var(--rs-error-c);
  border-radius: var(--rs-radius-md);
  background: rgb(var(--rs-danger-rgb) / .05);
  color: var(--rs-ctx-text);
}
.rs-error-summary:focus { outline: none; }
.rs-error-summary:focus-visible { outline: 3px solid var(--rs-focus); outline-offset: 3px; }
.rs-error-summary__title { margin: 0 0 .5rem; color: var(--rs-error-c); font-size: 1rem; font-weight: var(--rs-fw-black); line-height: 1.4; }
.rs-error-summary__list { display: grid; gap: .35rem; margin: 0; padding-left: 1.2rem; }
.rs-error-summary__list a { color: var(--rs-error-c); font-weight: var(--rs-fw-bold); text-decoration: underline; text-underline-offset: .2em; }

/* ===== 18 Wizard & tools ===== */
/* Scoping wizard (08 B-16 + contract § 7.3) and NDA generator (08 B-17 +
   contract § 5.6): white panels on the grey section, boxes.png language. */

/* ---------- 18.1 Wizard section + panel -------------------------------------------- */
.rs-wizard-section .rs-section-head { margin-bottom: 2.25rem; }
.rs-wizard {
  max-width: 60rem;
  margin: 0 auto;
  padding: clamp(1.5rem, 3vw, 2.5rem);
  border: 1px solid var(--rs-grey-400);
  border-top: 3px solid var(--rs-primary);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-white);
  box-shadow: var(--rs-shadow-card-soft);
  color: var(--rs-text);
  scroll-margin-top: var(--rs-scroll-offset);
}
.rs-wizard > .rs-callout--emergency:first-child { margin-bottom: 1.75rem; }   /* emergency hint above the stepper (spec/06 Nr. 10) */

/* stepper – counts.png rules on a light surface (done/current = secondary, upcoming = grey) */
.rs-stepper { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; margin: 0 0 2rem; padding: 0; list-style: none; }
.rs-stepper__item { min-width: 0; margin: 0; border-top: 3px solid var(--rs-grey-400); }
.rs-stepper__item[data-state="done"],
.rs-stepper__item[data-state="current"] { border-top-color: var(--rs-secondary); }
.rs-stepper__link {
  position: relative;
  display: grid;
  gap: .2rem;
  width: 100%;
  min-height: 1.5rem;
  margin: 0;
  padding: .75rem 0 0;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  text-align: left;
}
button.rs-stepper__link { cursor: pointer; }
button.rs-stepper__link:disabled { cursor: default; opacity: 1; }
.rs-stepper__num {
  color: var(--rs-text-muted);
  font-size: var(--rs-fs-label);
  font-weight: var(--rs-fw-black);
  letter-spacing: var(--rs-ls-kicker);
  line-height: 1.3;
  text-transform: uppercase;
}
.rs-stepper__label { color: var(--rs-text-muted); font-size: var(--rs-fs-ui); font-weight: var(--rs-fw-bold); line-height: 1.35; overflow-wrap: anywhere; }
.rs-stepper__item[data-state="done"] .rs-stepper__num,
.rs-stepper__item[data-state="current"] .rs-stepper__num { color: var(--rs-secondary-ink); }
.rs-stepper__item[data-state="done"] .rs-stepper__label { color: var(--rs-text-soft); }
.rs-stepper__item[data-state="current"] .rs-stepper__label { color: var(--rs-text); }
button.rs-stepper__link:not(:disabled):hover .rs-stepper__label { color: var(--rs-secondary-ink); text-decoration: underline; text-underline-offset: .2em; }
.rs-stepper__link:focus-visible { outline: 3px solid var(--rs-focus); outline-offset: 3px; border-radius: 2px; }
.rs-wizard__progress { margin: -1.25rem 0 1.5rem; color: var(--rs-text-muted); font-size: var(--rs-fs-meta); }
@media (max-width: 600px) {
  .rs-stepper { gap: .4rem; margin-bottom: 1.5rem; }
  .rs-stepper__link { padding-top: 0; }  /* bars only; the 24 px tap height stays */
  .rs-stepper__num,
  .rs-stepper__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .rs-wizard__progress { margin: -.5rem 0 1.25rem; color: var(--rs-text); font-weight: var(--rs-fw-bold); }
}

/* steps */
.rs-wizard__form { position: relative; }
.rs-wizard__step[hidden] { display: none; }
.rs-wizard__title { margin: 0 0 .5rem; font-size: var(--rs-fs-h3); font-weight: var(--rs-fw-black); line-height: 1.3; }
.rs-wizard__title:focus { outline: none; }                   /* focused by script after every step change */
.rs-wizard__title:focus-visible { outline: 3px solid var(--rs-focus); outline-offset: 4px; }
.rs-wizard__intro { margin: 0 0 1.5rem; color: var(--rs-text-soft); font-size: var(--rs-fs-intro); line-height: var(--rs-lh-copy); }
.rs-wizard__block { margin: 0 0 2rem; padding: 0 0 2rem; border-bottom: 1px solid var(--rs-grey-300); }
.rs-wizard__block:last-of-type { margin-bottom: 0; padding-bottom: 0; border-bottom: 0; }
.rs-wizard__block[hidden] { display: none; }
.rs-wizard__block-title { display: flex; align-items: center; gap: .75rem; margin: 0 0 .5rem; font-size: var(--rs-fs-card-title); font-weight: var(--rs-fw-bold); line-height: 1.3; }
.rs-wizard__block-intro { margin: 0 0 1.25rem; color: var(--rs-text-muted); font-size: var(--rs-fs-ui); line-height: 1.6; }
.rs-wizard__noscript-hint { display: none; margin: 0 0 1rem; color: var(--rs-text-muted); font-size: var(--rs-fs-meta); font-style: italic; }
html:not(.js) .rs-wizard__noscript-hint { display: block; }
.rs-wizard__nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  margin: 2rem 0 0;
  padding: 1.5rem 0 0;
  border-top: 1px solid var(--rs-grey-300);
}
.rs-wizard__nav > :only-child { margin-left: auto; }        /* step 1 has no "Zurück" */
.rs-wizard__step > .rs-spinner { display: block; margin: 1rem auto 0; }
@media (max-width: 600px) {
  .rs-wizard__nav { flex-direction: column-reverse; align-items: stretch; }
  .rs-wizard__nav .rs-btn { width: 100%; }
  .rs-wizard__nav > :only-child { margin-left: 0; }
}

/* selection groups + cards (checkbox or radio; input stays focusable, invisible) */
.rs-choice-group { margin: 0 0 1.5rem; }
.rs-choice-group:last-of-type { margin-bottom: .5rem; }
.rs-choice-group__title { margin: 0 0 .35rem; color: var(--rs-text); font-size: var(--rs-fs-card-title); font-weight: var(--rs-fw-bold); line-height: 1.3; }
.rs-choice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; margin: 0; padding: 0; list-style: none; }
.rs-choice-grid > li { position: relative; display: flex; min-width: 0; }
.rs-choice-card__input { position: absolute; top: 1.1rem; right: 1.1rem; width: 1.375rem; height: 1.375rem; margin: 0; opacity: 0; }
.rs-choice-card {
  position: relative;
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr) 1.375rem;
  align-items: start;
  gap: .9rem;
  width: 100%;
  min-height: 5.25rem;
  padding: 1rem 1.1rem;
  border: 1px solid var(--rs-grey-400);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-white);
  color: var(--rs-text);
  cursor: pointer;
  transition: border-color var(--rs-dur-card) var(--rs-ease), box-shadow var(--rs-dur-card) var(--rs-ease), background-color var(--rs-dur-card) var(--rs-ease);
}
.rs-choice-card:hover { border-color: var(--rs-secondary); box-shadow: var(--rs-shadow-card); }
.rs-choice-card__body { display: grid; gap: .2rem; min-width: 0; }
.rs-choice-card__label { font-size: 1rem; font-weight: var(--rs-fw-bold); line-height: 1.35; }
.rs-choice-card__hint { color: var(--rs-text-muted); font-size: var(--rs-fs-small); line-height: 1.45; }
.rs-choice-card__mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.375rem;
  height: 1.375rem;
  border: 1.5px solid var(--rs-grey-600);   /* 3.29:1 */
  border-radius: 50%;
  background: var(--rs-white);
  color: transparent;
  transition: background-color var(--rs-dur-card) var(--rs-ease), border-color var(--rs-dur-card) var(--rs-ease), color var(--rs-dur-card) var(--rs-ease);
}
.rs-choice-card__mark .icon { width: .875rem; height: .875rem; stroke-width: 3; }
.rs-choice-card__input:checked + .rs-choice-card { border-color: var(--rs-secondary); background: var(--rs-primary-25); box-shadow: inset 0 0 0 1px var(--rs-secondary); }
.rs-choice-card__input:checked + .rs-choice-card .rs-choice-card__mark { border-color: var(--rs-secondary-ink); background: var(--rs-secondary-ink); color: var(--rs-white); }   /* 5.58:1 */
.rs-choice-card__input:focus-visible + .rs-choice-card { outline: 3px solid var(--rs-focus); outline-offset: 2px; }
.rs-choice-card__input:disabled + .rs-choice-card { cursor: not-allowed; opacity: .55; }
.rs-choice-card__input[type="radio"] + .rs-choice-card .rs-choice-card__mark .icon { display: none; }
.rs-choice-card__input[type="radio"]:checked + .rs-choice-card .rs-choice-card__mark { box-shadow: inset 0 0 0 4px var(--rs-white); }
.rs-choice-counter { margin: 1rem 0 0; color: var(--rs-secondary-ink); font-size: var(--rs-fs-small); font-weight: var(--rs-fw-bold); }
.rs-wizard .rs-callout { margin-top: 1.25rem; }
@media (max-width: 600px) { .rs-choice-grid { grid-template-columns: minmax(0, 1fr); } }

/* review (rendered by scoping.js) */
.rs-review { display: grid; gap: 1rem; margin: 0 0 1.5rem; }
.rs-review__section { padding: 1.25rem 1.5rem; border: 1px solid var(--rs-grey-400); border-radius: var(--rs-radius-lg); background: var(--rs-white); }
.rs-review__head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin: 0 0 .75rem; }
.rs-review__title { margin: 0; font-size: var(--rs-fs-lead); font-weight: var(--rs-fw-black); line-height: 1.3; }
.rs-review__edit {
  flex: none;
  padding: 0;
  border: 0;
  background: none;
  color: var(--rs-secondary-ink);
  font: inherit;
  font-size: var(--rs-fs-small);
  font-weight: var(--rs-fw-bold);
  text-decoration: underline;
  text-underline-offset: .2em;
  cursor: pointer;
}
.rs-review__edit:hover { color: var(--rs-secondary-800); }
.rs-review__edit:focus-visible { outline: 2px solid var(--rs-focus); outline-offset: 3px; }
.rs-review__list { display: grid; gap: .5rem; margin: 0; }
.rs-review__row { display: grid; grid-template-columns: minmax(9rem, 14rem) minmax(0, 1fr); gap: .25rem 1.5rem; }
.rs-review__row dt { color: var(--rs-text-muted); font-size: var(--rs-fs-small); font-weight: var(--rs-fw-bold); line-height: 1.55; }
.rs-review__row dd { margin: 0; color: var(--rs-text); font-size: var(--rs-fs-ui); line-height: 1.55; overflow-wrap: anywhere; }
.rs-review__empty,
.rs-review__row dd.rs-review__empty { color: var(--rs-text-muted); font-style: italic; }
/* service blocks inside „Details zum Prüfumfang“ (scoping.js) */
.rs-review__subtitle { margin: 1.25rem 0 .6rem; padding-top: 1rem; border-top: 1px solid var(--rs-grey-300); color: var(--rs-secondary-ink); font-size: var(--rs-fs-ui); font-weight: var(--rs-fw-black); line-height: 1.35; }
.rs-review__head + .rs-review__subtitle { margin-top: 0; padding-top: 0; border-top: 0; }
@media (max-width: 600px) {
  .rs-review__row { grid-template-columns: minmax(0, 1fr); }
  .rs-review__section { padding: 1rem 1.1rem; }
}

/* success panel (replaces the wizard after {ok:true}) */
.rs-success { max-width: 40rem; margin: 0 auto; padding: 1rem 0; text-align: center; }
.rs-success[hidden] { display: none; }
.rs-success:focus { outline: none; }
.rs-success__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3.75rem;
  height: 3.75rem;
  margin: 0 0 1.25rem;
  border: 1px solid var(--rs-primary-100);
  border-radius: 50%;
  background: var(--rs-primary-50);
  color: var(--rs-secondary-700);
}
.rs-success__icon .icon { width: 1.75rem; height: 1.75rem; }
.rs-success__title { margin: 0 0 .75rem; font-size: var(--rs-fs-h3); font-weight: var(--rs-fw-black); line-height: 1.3; }
.rs-success__text { margin: 0 0 .75rem; color: var(--rs-text-soft); line-height: var(--rs-lh-copy); }
.rs-success__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: .875rem; margin: 1.5rem 0 0; }

/* no JavaScript: one long form */
html:not(.js) .rs-stepper,
html:not(.js) .rs-wizard__progress,
html:not(.js) [data-wizard-next],
html:not(.js) [data-wizard-back],
html:not(.js) .rs-review { display: none; }
html:not(.js) .rs-wizard__step + .rs-wizard__step { margin-top: 2.5rem; padding-top: 2.5rem; border-top: 1px solid var(--rs-grey-300); }
html:not(.js) .rs-wizard__step:not(:last-of-type) .rs-wizard__nav { display: none; }

/* ---------- 18.2 NDA generator ------------------------------------------------------- */
.rs-nda .rs-section-head { max-width: 48rem; }
.rs-tool { display: grid; grid-template-columns: minmax(0, 1fr) minmax(16rem, 21rem); align-items: start; gap: 2rem; }
.rs-tool__form { min-width: 0; }
.rs-tool__form .rs-fieldset { margin-bottom: 2rem; padding-bottom: .25rem; }
.rs-tool__form .rs-fieldset + .rs-fieldset { padding-top: 1.75rem; border-top: 1px solid var(--rs-grey-300); }
.rs-tool__aside { position: sticky; top: var(--rs-scroll-offset); display: grid; gap: 1rem; min-width: 0; }
.rs-tool__aside .rs-callout { margin: 0; }
.rs-tool__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .75rem;
  margin: 1.5rem 0 0;
  padding-top: 1.5rem;
  border-top: 1px solid var(--rs-grey-300);
}
.rs-tool__disclaimer { margin: 0; color: var(--rs-text-muted); font-size: var(--rs-fs-meta); line-height: 1.55; }
@media (max-width: 1024px) {
  .rs-tool { grid-template-columns: minmax(0, 1fr); }
  .rs-tool__aside { position: static; order: -1; }
}
@media (max-width: 600px) { .rs-tool__actions .rs-btn { width: 100%; } }

/* preview dialog (direct child of <body>, native top layer) */
.rs-doc-dialog {
  width: min(64rem, calc(100vw - 2rem));
  max-width: none;
  height: min(100dvh - 2rem, 60rem);
  max-height: none;
  margin: auto;
  padding: 0;
  overflow: hidden;
  border: 0;
  border-radius: var(--rs-radius-lg);
  background: var(--rs-grey);
  box-shadow: var(--rs-shadow-video);
  color: var(--rs-text);
}
.rs-doc-dialog[open] {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  animation: rs-fade-in-down var(--rs-dur-overlay) var(--rs-ease-in-out) both;
}
.rs-doc-dialog::backdrop { background: rgb(var(--rs-deep-rgb) / .72); }
.rs-doc-dialog__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: .85rem 1rem .85rem 1.5rem;
  border-bottom: 3px solid var(--rs-primary);
  background: var(--rs-charcoal);
}
.rs-doc-dialog__title { margin: 0; color: var(--rs-white); font-size: var(--rs-fs-lg); font-weight: var(--rs-fw-black); line-height: 1.3; }
.rs-doc-dialog__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 0;
  border-radius: var(--rs-radius-sm);
  background: transparent;
  color: var(--rs-white);
  cursor: pointer;
  transition: background-color var(--rs-dur-instant) ease-in-out, color var(--rs-dur-instant) ease-in-out;
}
.rs-doc-dialog__close .icon { width: 1.5rem; height: 1.5rem; }
.rs-doc-dialog__close:hover { background: var(--rs-primary); color: var(--rs-on-primary); }
.rs-doc-dialog__close:focus-visible { outline: 3px solid var(--rs-primary); outline-offset: 2px; }
.rs-doc-dialog__tools {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  padding: 1rem 1.5rem;
  border-bottom: 1px solid var(--rs-grey-400);
  background: var(--rs-white);
}
.rs-doc-dialog__tools .rs-btn { padding: .65rem 1.1rem; font-size: var(--rs-fs-ui); }
.rs-doc-dialog__body { overflow-y: auto; overscroll-behavior: contain; padding: clamp(1rem, 3vw, 2rem); }

/* document sheet (filled by nda.js; printed alone with html.print-doc) */
.rs-doc {
  max-width: 46rem;
  margin: 0 auto;
  padding: clamp(1.5rem, 4vw, 3.5rem);
  border: 1px solid var(--rs-grey-400);
  background: var(--rs-white);
  box-shadow: var(--rs-shadow-card);
  color: var(--rs-text);
  font-size: 1rem;
  line-height: 1.65;
}
.rs-doc h1 { margin: 0 0 1.5rem; font-size: var(--rs-fs-h4); font-weight: var(--rs-fw-black); line-height: 1.3; text-align: center; }
.rs-doc h2 { margin: 2rem 0 .75rem; font-size: var(--rs-fs-body); font-weight: var(--rs-fw-black); line-height: 1.4; }
.rs-doc p,
.rs-doc ul,
.rs-doc ol { margin: 0 0 1em; }
.rs-doc ul,
.rs-doc ol { padding-left: 1.5em; margin-left: 0; }
.rs-doc__parties { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; margin: 0 0 1.5rem; }
.rs-doc__parties > p { margin: 0; }
.rs-doc__blank { display: inline-block; min-width: 12em; border-bottom: 1px solid currentColor; line-height: 1.2; vertical-align: baseline; }
.rs-doc__signatures { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.5rem; margin-top: 3.5rem; }
.rs-doc__signature { margin: 0; padding-top: .4rem; border-top: 1px solid currentColor; font-size: var(--rs-fs-meta); }
@media (max-width: 600px) {
  .rs-doc-dialog { width: 100vw; height: 100dvh; max-height: 100dvh; border-radius: 0; }
  .rs-doc-dialog__tools .rs-btn { flex: 1 1 100%; }
  .rs-doc__parties,
  .rs-doc__signatures { grid-template-columns: minmax(0, 1fr); }
}

/* ===== 19 Overlays ===== */
/* Consent banner + switch (08 B-15), toasts (B-17), tooltip (06 block 16 →
   .rs-tip, C-80), back to top (06 § 15), language hint (contract § 4.5a). */

/* ---------- 19.1 Consent banner (non-blocking card, bottom left) ------------------ */
.rs-consent,
.consent:not(.rs-consent) {                 /* .consent = spec/02 name of the same banner */
  position: fixed;
  left: 1.5rem;
  bottom: 1.5rem;
  z-index: var(--rs-z-consent);
  width: min(30rem, calc(100vw - 3rem));
  max-height: calc(100vh - 3rem);
  max-height: calc(100dvh - 3rem);
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 1.5rem;
  border: 1px solid var(--rs-line-dark);
  border-top: 3px solid var(--rs-primary);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-charcoal-700);
  box-shadow: var(--rs-shadow-panel);
  color: var(--rs-text-on-dark-body);
}
.rs-consent:not([hidden]) { animation: rs-fade-in-up var(--rs-dur-overlay) var(--rs-ease-in-out) both; }
.rs-consent:focus { outline: none; }   /* programmatic focus on first show: the container is not operable (no ring) */
.rs-consent__title { margin: 0 0 .6rem; color: var(--rs-white); font-size: var(--rs-fs-lg); font-weight: var(--rs-fw-black); line-height: 1.3; }
.rs-consent__text { margin: 0 0 1.25rem; font-size: var(--rs-fs-small); line-height: 1.6; }
.rs-consent__actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.rs-consent__actions .rs-btn { width: 100%; padding-inline: 1rem; }   /* identical buttons = equal weight */
.rs-consent__links { margin: 1rem 0 0; color: var(--rs-text-on-dark-subtle); font-size: var(--rs-fs-meta); line-height: 1.6; }
.rs-consent__links a:not(.rs-btn),
.rs-consent__link { color: var(--rs-primary); text-decoration: underline; text-underline-offset: .2em; }
.rs-consent__link { padding: 0; border: 0; background: none; font: inherit; cursor: pointer; }
.rs-consent__links a:not(.rs-btn):hover,
.rs-consent__link:hover { color: var(--rs-primary-200); }
.rs-consent__links a:not(.rs-btn):focus-visible,
.rs-consent__link:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: 3px; border-radius: 2px; }
.rs-consent__group { min-width: 0; margin: 0 0 1.25rem; padding: 0; border: 0; }
.rs-consent__category { padding: .9rem 0; border-bottom: 1px solid var(--rs-white-a12); }
.rs-consent__category:first-of-type { padding-top: 0; }
.rs-consent__category-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.rs-consent__category-title { color: var(--rs-white); font-size: var(--rs-fs-ui); font-weight: var(--rs-fw-bold); line-height: 1.4; cursor: pointer; }
.rs-consent__category-text { margin: .35rem 0 0; color: var(--rs-text-on-dark-muted); font-size: var(--rs-fs-meta); line-height: 1.55; }

/* switch: native checkbox with role="switch" (off: 3.54:1 boundary, on: primary, thumb ink 7.42:1) */
.rs-switch {
  -webkit-appearance: none;
          appearance: none;
  position: relative;
  flex: 0 0 auto;
  width: 2.75rem;
  height: 1.5rem;
  margin: 0;
  border: 1px solid var(--rs-charcoal-350);
  border-radius: var(--rs-radius-pill);
  background: var(--rs-charcoal-600);
  cursor: pointer;
  transition: background-color var(--rs-dur-form) var(--rs-ease), border-color var(--rs-dur-form) var(--rs-ease);
}
.rs-switch::before {
  content: "";
  position: absolute;
  top: 50%;
  left: .1875rem;
  width: 1.0625rem;
  height: 1.0625rem;
  border-radius: 50%;
  background: var(--rs-text-on-dark-strong);
  transform: translateY(-50%);
  transition: transform var(--rs-dur-form) var(--rs-ease), background-color var(--rs-dur-form) var(--rs-ease);
}
.rs-switch:checked { border-color: var(--rs-primary); background: var(--rs-primary); }
.rs-switch:checked::before { background: var(--rs-on-primary); transform: translate(1.1875rem, -50%); }
.rs-switch:focus-visible { outline: 3px solid var(--rs-primary); outline-offset: 3px; }
.rs-switch:disabled { cursor: not-allowed; opacity: .6; }
@media (max-width: 600px) {
  .rs-consent { left: 1rem; right: 1rem; bottom: 1rem; width: auto; max-height: calc(100dvh - 2rem); padding: 1.25rem; }
  .rs-consent__actions { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- 19.2 Language hint (fixed card bottom right, § 4.5a) -------------------- */
.rs-lang-hint {
  position: fixed;
  right: 1rem;
  bottom: 5rem;
  z-index: var(--rs-z-langhint);
  width: min(24rem, calc(100vw - 2rem));
  padding: 1rem 3.25rem 1rem 1.25rem;
  border: 1px solid var(--rs-line-dark);
  border-top: 3px solid var(--rs-primary);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-charcoal-700);
  box-shadow: var(--rs-shadow-panel);
  color: var(--rs-text-on-dark-body);
}
.rs-lang-hint:not([hidden]) { animation: rs-fade-in-up var(--rs-dur-overlay) var(--rs-ease-in-out) both; }
.rs-lang-hint__text { margin: 0 0 .75rem; color: var(--rs-white); font-size: var(--rs-fs-ui); line-height: 1.5; }
.rs-lang-hint__actions { display: flex; align-items: center; gap: .75rem; }
.rs-lang-hint__switch,
.rs-btn.rs-lang-hint__switch { min-height: 44px; padding: .55rem 1rem; font-size: var(--rs-fs-small); font-weight: var(--rs-fw-black); line-height: 1.2; }
.rs-lang-hint__close {
  position: absolute;
  top: .4rem;
  right: .4rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  border-radius: var(--rs-radius-sm);
  background: transparent;
  color: var(--rs-text-on-dark-strong);
  cursor: pointer;
  transition: background-color var(--rs-dur-instant) ease-in-out, color var(--rs-dur-instant) ease-in-out;
}
.rs-lang-hint__close .icon { width: 1.25rem; height: 1.25rem; }
.rs-lang-hint__close:hover { background: var(--rs-white-a08); color: var(--rs-white); }
.rs-lang-hint__close:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: 0; }
@media (max-width: 600px) { .rs-lang-hint { left: 16px; right: 16px; bottom: 4.5rem; width: auto; } }

/* static previews inside <main> (styleguide § 5.9) – the live overlays are direct children of <body> */
main .rs-consent,
main .rs-lang-hint { position: relative; inset: auto; z-index: auto; max-height: none; margin: 0 0 1.5rem; animation: none; }

/* ---------- 19.3 Toasts (page level fixed, inside the dialog absolute) --------------- */
.rs-toast-region {
  position: fixed;
  left: 50%;
  bottom: 1.5rem;
  z-index: var(--rs-z-toast);
  display: grid;
  gap: .5rem;
  width: min(28rem, calc(100vw - 2rem));
  transform: translateX(-50%);
  pointer-events: none;
}
dialog .rs-toast-region { position: absolute; bottom: 1rem; }
.rs-toast {
  margin: 0;
  padding: .8rem 1rem;
  border-left: 4px solid var(--rs-primary);
  border-radius: var(--rs-radius-md);
  background: var(--rs-charcoal);
  box-shadow: var(--rs-shadow-panel);
  color: var(--rs-white);
  font-size: var(--rs-fs-small);
  line-height: 1.5;
  pointer-events: auto;
  animation: rs-fade-in-up var(--rs-dur-base) var(--rs-ease) both;
}
.rs-toast--error { border-left-color: var(--rs-danger-on-dark); }

/* ---------- 19.4 Tooltip (module kept, no hooks emitted) ----------------------------- */
.rs-tip { position: relative; display: inline; }
.rs-tip__trigger {
  position: relative;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  font-weight: var(--rs-fw-bold);
  cursor: help;
}
.rs-tip__trigger::before {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 2px;
  background: var(--rs-primary);
  transform: scaleX(0);
  transition: transform .1s;
}
.rs-tip__trigger:hover::before,
.rs-tip__trigger:focus-visible::before { transform: scaleX(1); transition: transform .3s var(--rs-ease-material); }
.rs-tip__bubble {
  --tip-shift: 0px;
  position: absolute;
  left: 50%;
  bottom: calc(100% + 10px);
  z-index: 1300;
  width: min(360px, 90vw);
  padding: .5rem 1rem;
  border-radius: var(--rs-radius-xs);
  background: var(--rs-charcoal);
  box-shadow: 4px 4px 10px rgb(var(--rs-black-rgb) / .35);
  color: var(--rs-white);
  font-size: var(--rs-fs-small);
  font-weight: var(--rs-fw-regular);
  line-height: 1.5;
  opacity: 0;
  pointer-events: none;
  transform: translateX(calc(-50% + var(--tip-shift))) translateY(4px);
  transition: opacity .2s var(--rs-ease-tooltip), transform .2s var(--rs-ease-tooltip), visibility 0s linear .2s;
  visibility: hidden;
}
.rs-tip__bubble[data-placement="bottom"] { top: calc(100% + 10px); bottom: auto; }
.rs-tip__bubble.is-visible {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(calc(-50% + var(--tip-shift))) translateY(0);
  transition: opacity .2s var(--rs-ease-tooltip), transform .2s var(--rs-ease-tooltip), visibility 0s;
  visibility: visible;
}

/* ---------- 19.5 Back to top ---------------------------------------------------------- */
.rs-back-to-top {
  position: fixed;
  right: 30px;
  bottom: 30px;
  z-index: var(--rs-z-backtotop);
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 1px solid var(--rs-white-a15);
  border-radius: var(--rs-radius-xs);
  background: rgb(var(--rs-charcoal-rgb) / .88);   /* white arrow ≥ 10:1 on any section */
  color: var(--rs-white);
  opacity: 0;
  pointer-events: none;
  transform: translateY(1rem);
  visibility: hidden;
  cursor: pointer;
  transition: opacity 300ms ease-in-out, transform 300ms ease-in-out, visibility 0s linear 300ms, background-color var(--rs-dur-instant) ease-in-out, color var(--rs-dur-instant) ease-in-out;
}
.rs-back-to-top .icon { width: 1.25rem; height: 1.25rem; }
.rs-back-to-top[data-visible] {
  opacity: 1;
  pointer-events: auto;
  transform: none;
  visibility: visible;
  transition: opacity 300ms ease-in-out, transform 300ms ease-in-out, visibility 0s, background-color var(--rs-dur-instant) ease-in-out, color var(--rs-dur-instant) ease-in-out;
}
.rs-back-to-top:hover { background: var(--rs-primary); color: var(--rs-on-primary); }
.rs-back-to-top:focus-visible { outline: 3px solid var(--rs-white); outline-offset: 2px; box-shadow: 0 0 0 5px var(--rs-charcoal); }   /* visible on light and dark sections */
@media (max-width: 600px) { .rs-back-to-top { right: 16px; bottom: 16px; } }

/* ===== 20 Footer ===== */
/* 01 § 9.19 (footer.png) + 05 § 10 + 08 B-22 + contract § 4.4: four columns,
   membership row with the ACS badge (never scaled: 282 × 109), legal line.
   Layout values (container, rhythm, link size, contact underline) follow the
   client-approved design preview (spec/10 item 2). */
.rs-footer { overflow: hidden; background: var(--rs-charcoal); color: var(--rs-text-on-dark-body); }
.rs-footer__main {
  display: grid;
  grid-template-columns: minmax(15rem, 1.25fr) repeat(3, minmax(0, 1fr));
  gap: 2.5rem 2.75rem;
  max-width: calc(var(--rs-container) + 2 * var(--rs-gutter));
  margin: 0 auto;
  padding: 76px var(--rs-gutter) 52px;
}
.rs-footer__col { min-width: 0; }
.rs-footer__title {
  position: relative;
  margin: 0 0 1.1rem;
  padding-bottom: .75rem;
  color: var(--rs-white);
  font-size: var(--rs-fs-body);
  font-weight: var(--rs-fw-bold);
  letter-spacing: .02em;
  line-height: 1.5;
}
.rs-footer__title::after { content: ""; position: absolute; left: 0; bottom: 0; width: 2.25rem; height: 3px; background: var(--rs-primary); }
.rs-footer__text + .rs-footer__title { margin-top: 1.9rem; }
.rs-footer__text { margin: 0; color: var(--rs-text-on-dark-body); font-style: normal; line-height: 1.75; }
.rs-footer__contact { margin: 0 0 .35rem; }
.rs-footer__contact a {                  /* design preview: tinted underline at rest (supersedes B-22) */
  color: var(--rs-white);
  font-weight: var(--rs-fw-bold);
  text-decoration: underline;
  text-decoration-color: var(--rs-primary-a55);
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
  transition: color var(--rs-dur-card) var(--rs-ease), text-decoration-color var(--rs-dur-card) var(--rs-ease);
}
.rs-footer__contact a:hover,
.rs-footer__contact a:focus-visible { color: var(--rs-primary); text-decoration-color: var(--rs-primary); }
.rs-footer__hours { margin: .65rem 0 1rem; color: var(--rs-text-on-dark-subtle); font-size: var(--rs-fs-small); line-height: 1.6; }
.rs-footer__col--contact .rs-alarm--footer { margin-top: .25rem; }
.rs-footer__links { margin: 0; padding: 0; list-style: none; }
.rs-footer__links > li { margin: 0; }
.rs-footer__link {
  display: block;
  width: fit-content;
  padding: .3rem 0;
  color: var(--rs-text-on-dark-body);
  font-size: 1rem;
  line-height: 1.5;
  text-decoration: none;
  transition: color var(--rs-dur-card) var(--rs-ease), transform var(--rs-dur-card) var(--rs-ease);
}
.rs-footer__link:hover,
.rs-footer__link:focus-visible { color: var(--rs-primary); transform: translateX(4px); }
.rs-footer__link[aria-current="page"] { color: var(--rs-white); }
.rs-footer__link--button {              /* a <button> styled like a footer link ("Cookie-Einstellungen") */
  margin: 0;
  border: 0;
  background: none;
  font-family: inherit;
  font-size: 1rem;
  line-height: 1.5;
  text-align: left;
  cursor: pointer;
}
.rs-footer :is(a, button):focus-visible { outline: 2px solid var(--rs-primary); outline-offset: 3px; border-radius: 2px; }
.rs-footer .rs-alarm:focus-visible { outline: 3px solid var(--rs-danger-focus); outline-offset: 2px; box-shadow: 0 0 0 5px var(--rs-charcoal-950); }

/* membership row (ACS badge) + optional social profiles */
.rs-footer__extra,
.rs-footer__bottom {                     /* the rules span the content width only */
  width: calc(100% - 2 * var(--rs-gutter));
  max-width: var(--rs-container);
  margin: 0 auto;
  border-top: 1px solid var(--rs-white-a11);
}
.rs-footer__extra {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 28px 48px;
  padding: 30px 0 36px;
}
.rs-footer__membership { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; min-width: 0; }
.rs-footer__membership-label {
  margin: 0;
  color: var(--rs-text-on-dark-muted);
  font-size: var(--rs-fs-label);
  font-weight: var(--rs-fw-bold);
  letter-spacing: var(--rs-ls-label);
  line-height: 1.6;
  text-transform: uppercase;
}
.rs-footer__social-list { display: flex; flex-wrap: wrap; gap: .65rem; }
.rs-footer__social {
  display: flex;
  align-items: center;
  gap: .5em;
  padding: .7rem .85rem;
  border: 1px solid var(--rs-white-a11);
  border-radius: var(--rs-radius-md);
  background: var(--rs-white-a05);
  color: var(--rs-white);
  text-decoration: none;
  transition: background-color var(--rs-dur-card) var(--rs-ease), border-color var(--rs-dur-card) var(--rs-ease), color var(--rs-dur-card) var(--rs-ease), transform var(--rs-dur-card) var(--rs-ease);
}
.rs-footer__social > .icon { width: 1.25em; height: 1.25em; }
.rs-footer__social:hover,
.rs-footer__social:focus-visible { border-color: var(--rs-primary); background: var(--rs-primary-a13); color: var(--rs-primary); transform: translateY(-2px); }

/* bottom line */
.rs-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 24px;
  padding: 20px 0 26px;
}
.rs-footer__legal { margin: 0; color: var(--rs-text-legal); font-size: var(--rs-fs-meta); line-height: 1.65; }
.rs-footer__legal a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }

/* technology partners (design preview: light logos 133 × 34 / 148 × 25, no filters) */
.rs-footer__partners { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; min-width: 0; }
.rs-footer__logos { display: flex; flex-wrap: wrap; align-items: center; gap: 22px 40px; }
.rs-footer__logo-link { display: block; line-height: 0; opacity: .92; transition: opacity var(--rs-dur-form) ease; }
.rs-footer__logo-link:hover { opacity: 1; }
.rs-footer__logo { display: block; width: auto; max-width: none; }
.rs-footer__logo--greenbone { height: 34px; }
.rs-footer__logo--rapid7 { height: 25px; }

/* ACS participant badge – cut-out logo files, no frame/radius (spec/10 item 2c) */
.rs-acs { display: block; width: fit-content; max-width: 100%; line-height: 0; }
.rs-acs picture { display: block; }
.rs-acs__img { display: block; width: 282px; height: auto; max-width: 100%; }   /* official web size (About, Partner) */
.rs-acs--footer .rs-acs__img { width: 140px; }                     /* footer size (preview) */
.rs-acs:focus-visible { outline: 2px solid var(--rs-primary); outline-offset: 3px; }

@media (max-width: 1024px) { .rs-footer__main { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) {
  .rs-footer__main { grid-template-columns: minmax(0, 1fr); row-gap: 2.25rem; padding-top: 56px; }
  .rs-footer__extra,
  .rs-footer__bottom { flex-direction: column; align-items: flex-start; }
}

/* ===== 21 Heroes & section shells ===== */
/* Home hero (particle network, 1:1 design preview – spec/10 item 1),
   split hero (04 § 5.1, 05 § 2.1, B-7, contract § 5.2.3), page hero (05 § 2,
   B-19, contract § 5.2.4) and the generic shells of 08 B-24. All heroes sit
   under the overlaid header: their top padding clears top bar + header row. */

/* ---------- 21.1 Home hero (HE1) – 1:1 design preview (spec/10 item 1) ------------------- */
/* Background: static CSS (charcoal + soft blue glow, complete without JS) and on top the
   particle network of the original library particles.js (container #rs-hero-network, init:
   assets/js/network.js, home page only, defer). Layers bottom → top: hero background →
   network (z -1) → slant (0) → content (1) → overlapping cards (.rs-feature-grid, z 10).
   Geometry: the hero starts below the fixed top bar (≥ 1200 px) resp. the fixed compact
   header row (< 1200 px) exactly like the preview, where both bars sit in the flow. */
.rs-home-hero {                          /* NO .rs-has-shape (B-8) */
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding: calc(var(--rs-header-h) + 74px) var(--rs-gutter) 170px;
  background: radial-gradient(ellipse at 50% 35%, rgb(var(--rs-secondary-rgb) / .18), transparent 60%), var(--rs-charcoal);
  color: var(--rs-white);
  text-align: center;
}
main > .rs-home-hero:first-child { margin-top: var(--rs-topbar-h); }   /* ≥ 1200 px: below the 58 px top bar */
.rs-hero__network { position: absolute; inset: 0; z-index: -1; overflow: hidden; }
.rs-hero__network canvas { display: block; }
/* Desktop: the transparent header row lies over the hero → fade the network out softly under the navigation */
@media (min-width: 75em) {
  .rs-hero__network {
    -webkit-mask-image: linear-gradient(to bottom, rgb(0 0 0 / .35), #000 calc(var(--rs-header-h) + 100px));
            mask-image: linear-gradient(to bottom, rgb(0 0 0 / .35), #000 calc(var(--rs-header-h) + 100px));
  }
}
/* The mouse reaches the network over the text as well (grab effect) – links/buttons stay usable */
.rs-home-hero__inner { position: relative; z-index: 1; max-width: 860px; margin: 0 auto; pointer-events: none; }
.rs-home-hero__inner a,
.rs-home-hero__inner button { pointer-events: auto; }
.rs-home-hero__title {
  margin: 0 0 18px;
  color: var(--rs-white);
  font-size: clamp(30px, 1.05rem + 2.55vw, 48px);
  font-weight: var(--rs-fw-black);
  letter-spacing: -.012em;
  line-height: 1.12;
  text-wrap: balance;
}
.rs-home-hero__accent { color: var(--rs-primary); }
.nw { white-space: nowrap; }
.rs-home-hero__tagline {
  margin: 0 0 30px;
  color: var(--rs-primary);
  font-size: clamp(19px, .82rem + 1.3vw, 30px);
  font-weight: var(--rs-fw-black);
  letter-spacing: 2.5px;
  line-height: 1.25;
}
.rs-home-hero__lead {
  max-width: 780px;
  margin: 0 auto 40px;
  padding-top: 30px;
  border-top: 1px solid rgb(var(--rs-primary-rgb) / .4);
  color: var(--rs-white);
  font-size: clamp(17px, 1rem + .3vw, 20px);
  line-height: 1.65;
}
.rs-home-hero__lead a { color: inherit; }
.rs-home-hero__cta {                     /* = preview .btn.btn--frame */
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  min-height: 44px;
  padding: 12px 20px 13px 22px;
  border: 2px solid var(--rs-secondary);
  border-radius: 0;
  background: transparent;
  color: var(--rs-white);
  font: var(--rs-fw-black) 17px/1.1 var(--rs-font);
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.rs-home-hero__cta .icon { width: 1.05em; height: 1.05em; stroke-width: 2.25; transition: transform .15s ease; }
.rs-home-hero__cta:hover { border-color: var(--rs-primary); color: var(--rs-primary); }
.rs-home-hero__cta:hover .icon { transform: translateX(3px); }
.rs-home-hero__cta:focus-visible { outline: 2px solid var(--rs-white); outline-offset: 3px; }
.rs-home-hero__slant { position: absolute; left: 0; right: 0; bottom: -1px; z-index: 0; line-height: 0; pointer-events: none; }
.rs-home-hero__slant svg { display: block; width: 100%; height: 56px; fill: var(--rs-white); }
@media (max-width: 74.99em) {
  .rs-home-hero { padding-top: 76px; }
  main > .rs-home-hero:first-child { margin-top: var(--rs-header-h); }   /* below the fixed 68 px header row */
  .no-js main > .rs-home-hero:first-child { margin-top: 0; }             /* no-JS: header in the flow */
}
@media (max-width: 767px) {
  .rs-home-hero { padding-bottom: 130px; }
  .rs-home-hero__tagline { letter-spacing: 1px; }
  .rs-home-hero__slant svg { height: 32px; }
}

/* overlapping feature cards section (C5, 03 P3) */
.rs-home-cards { padding-block: 0 3.5rem; }

/* ---------- 21.2 Split hero (HE2; default · solo · quote · emergency) ------------------ */
.rs-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding: var(--rs-hero-pt) 1.5rem 6em; /* 13em → 12em (< 1200) → 10em (≤ 768) */
  background: var(--rs-charcoal-900);
  color: var(--rs-white);
}
.rs-hero::after {                        /* dot field top right (about.png) */
  content: "";
  position: absolute;
  top: 0;
  right: -8%;
  z-index: -1;
  width: 55%;
  height: 70%;
  background-image: radial-gradient(var(--rs-primary-a22) 1.3px, transparent 1.3px);
  background-size: 16px 16px;
  opacity: .55;
  pointer-events: none;
}
.rs-hero--emergency::after { background-image: radial-gradient(rgb(var(--rs-danger-rgb) / .22) 1.3px, transparent 1.3px); }
.rs-hero__inner {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(min(22rem, 100%), .95fr);
  align-items: start;                    /* top-aligned like about.png / page-quote.png – our form card is taller */
  gap: clamp(2.5rem, 5vw, 4rem);
  max-width: var(--rs-container-wide);
  margin: 0 auto;
}
.rs-hero__content { min-width: 0; }
.rs-hero__title { margin: 0; color: var(--rs-white); font-size: var(--rs-fs-h1); line-height: var(--rs-lh-heading); text-wrap: balance; }
.rs-hero__accent { color: var(--rs-primary); }
.rs-hero__tagline {
  margin: .9rem 0 0;
  color: var(--rs-primary);
  font-size: var(--rs-fs-h4);            /* 18 → 22 px */
  font-weight: var(--rs-fw-black);
  letter-spacing: .03em;
  line-height: 1.3;
}
.rs-hero__summary {
  max-width: 34rem;
  margin: 1.5rem 0 1.75rem;
  color: var(--rs-text-on-dark-soft);
  font-size: var(--rs-fs-summary);       /* 17 → 20 px */
  line-height: var(--rs-lh-body);
}
.rs-hero .rs-checklist { margin: 0 0 2rem; }
.rs-hero .rs-include { margin: 0 0 1.75rem; }
.rs-hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .875rem; margin: 0; }
.rs-hero .rs-checklist + .rs-stats,
.rs-hero__actions + .rs-stats { margin-top: 2.5rem; }   /* list 2rem + 2.5rem = 72 px (about.png, C-70) */
.rs-hero__content > .rs-stats:last-child { margin-bottom: 0; }
.rs-hero--solo .rs-hero__inner { grid-template-columns: minmax(0, 46rem); }   /* no form card: left column only */
.rs-hero .rs-form-card { justify-self: stretch; }

/* quote hero (page-quote.png) */
.rs-hero--quote { padding-bottom: 7rem; }
.rs-hero--quote::after { content: none; }
.rs-hero--quote .rs-hero__inner { grid-template-columns: minmax(0, 1.08fr) minmax(min(22rem, 100%), .92fr); }
.rs-hero--quote .rs-kicker-row { gap: .75rem; }
.rs-hero--quote .rs-badge { padding: .45rem .75rem; border-color: var(--rs-primary-a45); background: var(--rs-primary-a14); letter-spacing: .08em; }
.rs-hero--quote .rs-hero__summary { max-width: 37rem; font-size: var(--rs-fs-lead); line-height: var(--rs-lh-copy); }
.rs-hero--quote .rs-hero__actions { max-width: 37rem; }
.rs-hero--quote .rs-include { max-width: 37rem; }

@media (max-width: 1024px) {
  .rs-hero__inner,
  .rs-hero--quote .rs-hero__inner { grid-template-columns: minmax(0, 1fr); max-width: var(--rs-container-narrow); }
  .rs-hero__summary { max-width: none; }
  .rs-hero--solo .rs-hero__inner { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 600px) {
  .rs-hero { padding: var(--rs-hero-pt) 1rem 3.5rem; }
  .rs-hero::after { width: 85%; opacity: .35; }
  .rs-hero--quote { padding-bottom: 5.5rem; }
  .rs-hero__summary,
  .rs-hero--quote .rs-hero__summary { font-size: 1rem; }
  .rs-hero__actions .rs-btn { width: 100%; }
}

/* ---------- 21.3 Page hero (HE3; center · boxed · headline · icon) ------------------- */
.rs-page-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background-color: var(--rs-charcoal);
  color: var(--rs-white);
}
.rs-page-hero::before {                  /* texture layer (modifiers below), CSP-safe */
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
}
.rs-page-hero__inner {
  position: relative;
  z-index: 1;
  max-width: calc(var(--rs-container) + 2 * var(--rs-gutter));
  margin: 0 auto;
  padding: calc(var(--rs-topbar-h) + 152px) var(--rs-gutter) 60px;   /* 210 / 60 px (05 H3) */
}
.rs-page-hero__body { width: 75%; margin: 0 auto; padding: 30px 0; }
.rs-page-hero__title { margin: 0; color: var(--rs-white); text-wrap: balance; }
.rs-page-hero__mark { color: var(--rs-primary); }
.rs-page-hero .rs-eyebrow { margin-bottom: .85rem; }
.rs-page-hero .rs-hero-lead { margin: 1.5rem 0 0; }
.rs-page-hero__lead { margin: 0; color: var(--rs-text-on-dark-soft); line-height: var(--rs-lh-body); }
.rs-page-hero__meta { margin: 1rem 0 0; color: var(--rs-text-on-dark-subtle); font-size: var(--rs-fs-meta); line-height: 1.5; }
.rs-page-hero .rs-hero__actions { margin-top: 2rem; }
.rs-page-hero .rs-shape { z-index: 1; }

/* center (careers, thanks, 404, system pages) */
.rs-page-hero--center .rs-page-hero__inner { text-align: center; }
.rs-page-hero--center .rs-hero__actions,
.rs-page-hero--headline .rs-hero__actions,
.rs-page-hero--icon .rs-hero__actions { justify-content: center; }

/* boxed (glossary, glossary term, legal pages) */
.rs-page-hero--boxed { background-image: linear-gradient(118deg, var(--rs-charcoal-900) 0%, var(--rs-charcoal) 60%); }
.rs-page-hero--boxed .rs-page-hero__inner { padding: calc(var(--rs-topbar-h) + 192px) var(--rs-gutter) 120px; }
.rs-page-hero__box {
  width: 50%;
  min-width: min(100%, 30rem);
  padding: 2em 2em 30px;
  border: 1px solid var(--rs-white);
  border-radius: var(--rs-radius-xs);
  background: rgb(var(--rs-charcoal-rgb) / .91);
}
.rs-page-hero--boxed .rs-page-hero__title {
  margin: 0 0 20px;
  font-size: clamp(1.625rem, 1.25rem + 1.1vw, 1.875rem);   /* 26 → 30 px */
  line-height: 1.2;
  text-align: left;
}
.rs-page-hero__box > :last-child { margin-bottom: 0; }

/* headline (Leistungsübersicht): headline + subline + framed button, followed by the dark list */
.rs-page-hero--headline .rs-page-hero__inner { padding: calc(var(--rs-topbar-h) + 102px) var(--rs-gutter) 100px; text-align: center; }
.rs-page-hero--headline .rs-page-hero__body { padding: 30px 0 0; }
.rs-page-hero__subline {                 /* 05 H5 look, tuned for the long real sublines (5–7 lines) */
  max-width: 52rem;
  margin: 20px auto;
  padding: 16px 0 20px;
  border-top: 1px solid var(--rs-primary-a24);
  color: var(--rs-text-on-dark-soft);    /* 10.7:1 */
  font-size: var(--rs-fs-summary);       /* 17 → 20 px */
  font-weight: var(--rs-fw-bold);
  line-height: 1.55;
  text-wrap: pretty;
}
.rs-page-hero--headline .rs-checklist--inline { justify-content: center; margin: 1.75rem 0 0; }

/* icon (Presse): lines icon above the title, 20 px slant */
.rs-page-hero--icon {
  background-image: linear-gradient(120deg, var(--rs-charcoal) 40%, var(--rs-charcoal-950) 100%);
  text-align: center;
}
.rs-page-hero--icon .rs-page-hero__inner { padding: calc(var(--rs-topbar-h) + 110px) var(--rs-gutter) 80px; }
.rs-page-hero--icon .rs-page-hero__title { display: flex; flex-direction: column; align-items: center; margin: 1.5rem 0 10px; color: #F5F8FA; }
.rs-page-hero__lines { display: block; width: 3em; height: 3em; margin: 0 0 .5em; color: var(--rs-primary); }
.rs-page-hero--icon .rs-shape--slant { --rs-shape-h: 20px; }

/* textures – declared after the variants so they win. --tex-map (default of page-hero.php) no
   longer uses the world map (spec/02 25.10.: „Charcoal mit dezentem eigenem Muster/Verlauf“):
   a fine blueprint grid fading out towards the text + a soft Secondary glow top right. */
.rs-page-hero--tex-map::before {
  background:
    linear-gradient(rgb(var(--rs-primary-rgb) / .55) 1px, transparent 1px) 0 0 / 44px 44px,
    linear-gradient(90deg, rgb(var(--rs-primary-rgb) / .55) 1px, transparent 1px) 0 0 / 44px 44px;
  opacity: .11;
  -webkit-mask-image: radial-gradient(ellipse 62% 95% at 88% 55%, #000 0, rgb(0 0 0 / .55) 40%, transparent 78%);
          mask-image: radial-gradient(ellipse 62% 95% at 88% 55%, #000 0, rgb(0 0 0 / .55) 40%, transparent 78%);
}
.rs-page-hero--tex-map::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: radial-gradient(ellipse 48% 70% at 92% 8%, rgb(var(--rs-secondary-rgb) / .2), transparent 70%);
  pointer-events: none;
}
.rs-page-hero--tex-dots::before {
  background-image: radial-gradient(var(--rs-primary) 1.3px, transparent 1.3px);
  background-size: 22px 22px;
  opacity: .1;
}
.rs-page-hero--tex-dash::before {
  background: url("../img/dash-cluster.svg") right 8% center / 340px auto no-repeat;
  opacity: .2;
}
@media (min-width: 768px) and (prefers-reduced-motion: no-preference) {
  /* parallax: the texture stays with the viewport while the hero scrolls (clip-path clips the fixed layer) */
  .rs-page-hero--fixed { clip-path: inset(0); }
  .rs-page-hero--fixed::before { position: fixed; inset: 0; }
  .rs-page-hero--fixed.rs-page-hero--tex-dots::before { background-attachment: fixed; }
}
@media (max-width: 1024px) {
  .rs-page-hero__body { width: 88%; }
  .rs-page-hero__box { width: 75%; }
}
@media (max-width: 767px) {
  .rs-page-hero__inner { padding: calc(var(--rs-topbar-h) + 150px) var(--rs-gutter) 50px; }
  .rs-page-hero__body,
  .rs-page-hero__box { width: 100%; min-width: 0; }
  .rs-page-hero--boxed .rs-page-hero__inner { padding: calc(var(--rs-topbar-h) + 165px) var(--rs-gutter) 90px; }
  .rs-page-hero__box { padding: 1.5rem 1.25rem 1.5rem; }
  .rs-page-hero--icon .rs-page-hero__inner { padding: calc(var(--rs-topbar-h) + 125px) var(--rs-gutter) 70px; }
  .rs-page-hero--headline .rs-page-hero__inner { padding: calc(var(--rs-topbar-h) + 140px) var(--rs-gutter) 90px; }
  .rs-page-hero__subline { font-size: var(--rs-fs-lead); }
}
@media (max-width: 600px) { .rs-page-hero .rs-hero__actions .rs-btn { width: 100%; } }

/* ---------- 21.4 Split panels (block split, affects.png; B-24) ---------------------- */
.rs-split-panels { padding-block: clamp(4rem, 7vw, 6.5rem); background: var(--rs-charcoal); }
.rs-split-panels .rs-section-head { max-width: 50rem; margin-bottom: 2.5rem; }
.rs-split-panels .rs-section-head__title { margin-bottom: 1rem; }
.rs-split-panels .rs-section-head__intro { max-width: 48rem; line-height: var(--rs-lh-relaxed); }
.rs-split-panels__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
@media (max-width: 768px) { .rs-split-panels__grid { grid-template-columns: minmax(0, 1fr); } }
/* light variant (after a dark section): white cards, light context */
.rs-split-panels--light { background: var(--rs-grey); }
.rs-split-panels--light .rs-panel {
  --rs-ctx-text: var(--rs-text-soft);
  --rs-ctx-heading: var(--rs-text);
  --rs-ctx-accent: var(--rs-secondary-ink);
  --rs-ctx-link: var(--rs-secondary-ink);
  --rs-ctx-link-hover: var(--rs-secondary-800);
  --rs-ctx-border: var(--rs-grey-400);
  --rs-ctx-rule: var(--rs-grey-400);
  --rs-focus: var(--rs-secondary-ink);
  border-color: var(--rs-grey-400);
  background: var(--rs-white);
  box-shadow: var(--rs-shadow-card-faint);
  color: var(--rs-text-soft);
}
.rs-split-panels--light .rs-panel--accent { border-top-color: var(--rs-primary); }
.rs-split-panels--light .rs-panel__list { color: var(--rs-text-soft); }
.rs-split-panels--light .rs-panel__list strong { color: var(--rs-text); }
.rs-split-panels--light .rs-review-row { border-top-color: var(--rs-grey-400); }
.rs-split-panels--light .rs-review-row strong { color: var(--rs-secondary-ink); }

/* ---------- 21.5 Accent cards (block cards accent, boxes.png) ------------------------ */
.rs-accent-cards { padding-block: clamp(4rem, 7vw, 6.5rem); background: var(--rs-grey); }
.rs-accent-cards .rs-section-head { max-width: 48rem; margin-bottom: 2.5rem; }
.rs-accent-cards .rs-section-head__title { margin-bottom: 1rem; }
.rs-accent-cards .rs-grid { --rs-gap: 1.25rem; }
.rs-accent-cards__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  margin-top: 2rem;
  padding-top: 2rem;
  border-top: 1px solid var(--rs-grey-400);
}
.rs-accent-cards__note { max-width: 48rem; margin: 0; color: var(--rs-text-soft); line-height: var(--rs-lh-copy); }
.rs-accent-cards__note strong { color: var(--rs-text); }
.rs-accent-cards__footer .rs-btn { flex: 0 0 auto; }
@media (max-width: 768px) { .rs-accent-cards__footer { flex-direction: column; align-items: stretch; gap: 1.25rem; } }

/* ---------- 21.6 Process (block process, counts.png) -------------------------------- */
.rs-process-section { padding-block: 5.5rem; background: var(--rs-charcoal-900); }
.rs-process-section .rs-section-head { max-width: 46rem; }
.rs-process-section--light { background: var(--rs-white); }
@media (max-width: 600px) { .rs-process-section { padding-block: 3.5rem; } }

/* ---------- 21.7 Services band (block cards dark, block-services.png) ---------------- */
.rs-services-band { position: relative; overflow: hidden; padding-block: clamp(3.5rem, 7vw, 6rem); }
.rs-services-band__eyebrow { margin-bottom: 1rem; padding-left: calc(1.75rem + .75rem); }   /* aligned with the kicker title */
.rs-services-band .rs-kicker { margin-bottom: 3rem; }
.rs-services-band .rs-kicker > h2 { color: var(--rs-white); font-weight: var(--rs-fw-bold); }
.rs-services-band .rs-kicker > p { grid-column: 2; max-width: 50rem; margin: 0; color: var(--rs-text-on-dark-body); line-height: var(--rs-lh-copy); }
@media (max-width: 768px) { .rs-services-band { padding-block: 3.5rem; } }

/* ---------- 21.8 CTA (section with panel; band variant) ----------------------------- */
.rs-cta-section { padding: 5rem 1.5rem; border-top: 1px solid var(--rs-charcoal-500); background: var(--rs-charcoal); text-align: center; }
.rs-cta-panel {
  max-width: var(--rs-container-cta);
  margin: 0 auto;
  padding: 3.5rem 2rem;
  border: 1px solid var(--rs-line-dark);
  border-top: 3px solid var(--rs-primary);
  border-radius: var(--rs-radius-xl);
  background: var(--rs-charcoal-900);
  box-shadow: var(--rs-shadow-cta);
  color: var(--rs-white);
  text-align: center;
}
.rs-cta-panel__title { margin: 0 0 1rem; color: var(--rs-white); text-wrap: balance; }
.rs-cta-panel__copy { max-width: 38rem; margin: 0 auto 2rem; color: var(--rs-text-on-dark-body); font-size: var(--rs-fs-lead); line-height: var(--rs-lh-copy); }
.rs-cta-panel__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .875rem; }
@media (max-width: 600px) {
  .rs-cta-section { padding: 3.5rem 1rem; }
  .rs-cta-panel { padding: 2.5rem 1.25rem; }
  .rs-cta-panel__copy { font-size: 1rem; }
  .rs-cta-panel__actions .rs-btn { width: 100%; }
}
.rs-cta-band {                           /* industry pages */
  position: relative;
  padding: 2.5rem max(var(--rs-gutter), calc((100% - var(--rs-container-module)) / 2));
  border-top: 1px solid var(--rs-white-a14);
  background: var(--rs-charcoal-900);
  color: var(--rs-white);
}
.rs-cta-band::before {                   /* 120 × 4 px centre accent on the hairline */
  content: "";
  position: absolute;
  top: -1px;
  left: 50%;
  width: 120px;
  height: 4px;
  background: var(--rs-primary);
  transform: translateX(-50%);
}
.rs-cta-band__inner { display: flex; align-items: center; justify-content: space-between; gap: 2rem; max-width: var(--rs-container-module); margin-inline: auto; }
.rs-cta-band__copy { min-width: 0; max-width: 760px; }
.rs-cta-band__title { margin: 0 0 .65rem; color: var(--rs-white); letter-spacing: -.025em; line-height: 1.1; text-wrap: balance; }
.rs-cta-band__text { margin: 0; color: var(--rs-text-on-dark-body); line-height: 1.6; }
.rs-cta-band__inner > .rs-btn { flex: 0 0 auto; }
.rs-cta-band--tall .rs-cta-band__inner { padding: 2.5rem 1.5rem; }   /* industry pages: padding applied twice on purpose */
@media (max-width: 768px) {
  .rs-cta-band::before { width: 90px; }
  .rs-cta-band__inner { flex-direction: column; align-items: flex-start; }
  .rs-cta-band--tall .rs-cta-band__inner { padding: 1.5rem 0; }
}
@media (max-width: 600px) { .rs-cta-band__inner > .rs-btn { width: 100%; } }

/* ---------- 21.9 Form band (block contact) ------------------------------------------ */
.rs-form-band { position: relative; isolation: isolate; overflow: hidden; padding: 5rem 1.5rem 6rem; background: var(--rs-charcoal); }
.rs-form-band__inner { position: relative; z-index: 1; max-width: 800px; margin: 0 auto; }
.rs-form-band .rs-form-card { box-shadow: var(--rs-shadow-cta); }
.rs-form-band > .rs-shape { z-index: 2; }
.rs-form-band.rs-has-shape { padding-bottom: calc(6rem + 30px); }   /* room for the 30 px V-cut */
@media (max-width: 600px) {
  .rs-form-band { padding: 3.5rem 1rem 4.5rem; }
  .rs-form-band.rs-has-shape { padding-bottom: calc(4.5rem + 30px); }
}

/* ---------- 21.10 No-JS: header in the flow < 1200 px → heroes need less top space --- */
@media (max-width: 74.99em) {
  .no-js .site-top ~ main > .rs-hero:first-child { padding-top: 3.5rem; }
  .no-js .site-top ~ main > .rs-page-hero:first-child .rs-page-hero__inner { padding-top: 3.5rem; }
}

/* ===== 22 Page modules ===== */
/* 04 service modules, 05 hub/industry/special modules, 08 B-18 legal, B-23
   homepage, contract § 5.3–5.7 (definition, vulnerabilities, why cards,
   sector modules, industries, services list, overview intro, membership,
   contact, hotline, emergency form, glossary, term layout, pager, legal). */

/* ---------- 22.0 Section roots (contract hooks; spacing/tone come from .rs-section + .rs-tone-*) */
.rs-definition,
.rs-vulns,
.rs-faq-section,
.rs-term-section,
.rs-challenges,
.rs-benefits,
.rs-emergency-form { position: relative; }   /* positioning context for shapes and decorations */

/* ---------- 22.1 Definition (block intro toc) -------------------------------------- */
.rs-definition__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;                    /* TOC starts level with the heading, also next to long texts (QA 4.4 #3) */
  column-gap: 5rem;
  row-gap: 3rem;
}
@media (min-width: 1025px) {
  .rs-definition__grid > .rs-toc { position: sticky; top: var(--rs-scroll-offset); margin-top: 0; }
}
.rs-definition__grid--single { grid-template-columns: minmax(0, 1fr); }
.rs-definition__grid--single .rs-definition__copy { max-width: var(--rs-measure); }
.rs-definition__copy { min-width: 0; }
.rs-definition__copy > :last-child,
.rs-definition__text > :last-child { margin-bottom: 0; }
@media (max-width: 1024px) {
  .rs-definition__grid { grid-template-columns: minmax(0, 1fr); }
  .rs-definition__grid > .rs-toc { justify-self: start; margin-inline: 0; }   /* single column: aligned with the copy */
}

/* ---------- 22.2 Vulnerabilities (blocks.png) ---------------------------------------- */
.rs-vulns__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.rs-vulns__intro {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  overflow: hidden;
  padding: 1.5rem 1.5rem 3rem;           /* +1.5 rem bottom: the 30 px accent never covers text */
  background: var(--rs-charcoal);
  color: var(--rs-grey-200);
}
.rs-vulns__intro .rs-headline { margin: 0 0 1.5rem; color: var(--rs-grey-200); }
.rs-vulns__intro .rs-heading:last-child .rs-headline { margin-bottom: 0; }
.rs-vulns__intro-text { margin: 0; color: var(--rs-white); font-size: 1rem; line-height: 1.6; }
.rs-vulns__accent {                      /* "peaks" shape, 30 px, primary */
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  overflow: hidden;
  line-height: 0;
  pointer-events: none;
  color: var(--rs-primary);
}
.rs-vulns__accent svg {
  display: block;
  position: relative;
  left: 50%;
  width: calc(100% + 1.3px);
  min-width: 100%;
  max-width: none;
  height: 30px;
  transform: translateX(-50%);
  fill: currentColor;
}
.rs-vulns__cta { min-width: 0; padding: 1.5rem; background: var(--rs-charcoal); color: var(--rs-grey-200); }
.rs-vulns__cta--span-1 { grid-column: span 1; }
.rs-vulns__cta--span-2 { grid-column: span 2; }
.rs-vulns__cta--span-3 { grid-column: span 3; }
.rs-vulns__cta-title { margin: 0 0 1.5rem; color: var(--rs-primary); font-size: var(--rs-fs-h5); font-weight: var(--rs-fw-black); line-height: 1.6; }
.rs-vulns__cta-row { display: flex; align-items: center; column-gap: 4rem; row-gap: 1.5rem; }
.rs-vulns__cta-row p { margin: 0; color: var(--rs-grey-200); font-size: var(--rs-fs-lead); line-height: 1.6; }
.rs-vulns__cta-row .rs-btn { flex: 0 0 auto; }
.rs-vulns__cta--span-1 .rs-vulns__cta-row { flex-direction: column; align-items: flex-start; }
@media (max-width: 1024px) {                 /* tablet: 2 columns (04 proposal), intro + CTA full width */
  .rs-vulns__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rs-vulns__intro,
  .rs-vulns__cta--span-1,
  .rs-vulns__cta--span-2,
  .rs-vulns__cta--span-3 { grid-column: 1 / -1; }
}
@media (max-width: 767px) { .rs-vulns__grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 767px) {
  .rs-vulns__intro { padding: 1.25rem 1.25rem 2.75rem; }
  .rs-vulns__cta { padding: 1.25rem; }
  .rs-vulns__cta-row { flex-direction: column; align-items: flex-start; row-gap: 2rem; }
}

/* ---------- 22.3 Icon cards section ---------------------------------------------------- */
.rs-icon-cards-section .rs-section-head { margin-bottom: 2.5rem; }

/* ---------- 22.4 Why cards (hubs: dark cards on white; 05 § 6.1) ---------------------- */
.rs-why-cards { padding: clamp(3.5rem, 7vw, 6rem) var(--rs-gutter) clamp(4.5rem, 8vw, 6.5rem); color: var(--rs-text); }
.rs-why-cards__inner { max-width: var(--rs-container-wide); margin: 0 auto; }
.rs-why-cards__head { max-width: 45rem; margin: 0 auto clamp(2.5rem, 5vw, 3.5rem); text-align: center; }
.rs-why-cards__head .rs-eyebrow { margin-bottom: 1rem; }
.rs-why-cards__title { margin: 0 0 1rem; text-wrap: balance; }
.rs-why-cards__intro { margin: 0; color: var(--rs-text-muted); font-size: var(--rs-fs-lead); line-height: var(--rs-lh-copy); text-wrap: balance; }
.rs-why-cards__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; margin: 0; padding: 0; list-style: none; }
.rs-why-cards__grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 74.99em) { .rs-why-cards__grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 1024px) { .rs-why-cards__grid { gap: 1.25rem; } }
@media (max-width: 860px) {
  .rs-why-cards__grid:not(.rs-why-cards__grid--4) { grid-template-columns: minmax(0, 1fr); max-width: 45rem; margin-inline: auto; }
}
@media (max-width: 600px) {
  .rs-why-cards__grid--4 { grid-template-columns: minmax(0, 1fr); }
  .rs-why-cards__head { margin-bottom: 2rem; }
  .rs-why-cards__intro { font-size: 1rem; }
}

/* ---------- 22.5 Sector modules (industry pages; 05 § 6.3–6.7) ---------------------- */
.rs-sector { padding: clamp(3.5rem, 7vw, 6rem) 1.5rem; }
.rs-sector__inner { max-width: var(--rs-container-module); margin-inline: auto; }
@media (max-width: 768px) { .rs-sector { padding: 3.5rem var(--rs-gutter); } }
.rs-challenges__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(260px, .75fr);
  align-items: center;
  gap: var(--rs-gap-split-fluid);
}
.rs-challenges__grid--single { grid-template-columns: minmax(0, 1fr); max-width: 52rem; }
.rs-challenges__grid > div > :last-child { margin-bottom: 0; }
.rs-challenges__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin: 3rem 0 0; padding: 0; list-style: none; }
@media (max-width: 1024px) { .rs-challenges__list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 768px)  { .rs-challenges__grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 560px)  { .rs-challenges__list { grid-template-columns: minmax(0, 1fr); } }
.rs-benefits-split {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(min(280px, 100%), .8fr);
  align-items: center;
  gap: var(--rs-gap-split-fluid);
}
.rs-benefits-split > div > :last-child { margin-bottom: 0; }
@media (max-width: 768px) { .rs-benefits-split { grid-template-columns: minmax(0, 1fr); } }
.rs-process-tabs-section .rs-sector-copy { max-width: 46rem; }
.rs-process-tabs-section .rs-kicker { margin-bottom: 1.25rem; }

/* ---------- 22.6 Industries directory (/branchen/; 05 § 6.2) ------------------------- */
.rs-industries { padding: clamp(4rem, 8vw, 7rem) 1.5rem; background: var(--rs-charcoal); }
.rs-industries__inner { max-width: var(--rs-container-module); margin-inline: auto; }
.rs-industries__head { max-width: 760px; margin: 0 auto clamp(2.5rem, 5vw, 4rem); text-align: center; }
.rs-industries__head .rs-eyebrow { margin-bottom: 1rem; line-height: 1.3; letter-spacing: var(--rs-ls-label); }
.rs-industries__title { margin: 0 0 1rem; color: var(--rs-white); font-weight: var(--rs-fw-black); letter-spacing: var(--rs-ls-display); line-height: 1.08; text-wrap: balance; }
.rs-industries__intro { margin: 0; color: var(--rs-text-on-dark-body); font-size: 1rem; line-height: 1.75; }
.rs-industries__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.25rem; margin: 0; padding: 0; list-style: none; }
.rs-industries__grid > li { display: flex; min-width: 0; }
.rs-industries__grid > li > * { flex: 1 1 auto; min-width: 0; }
@media (max-width: 1024px) { .rs-industries__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 768px) {
  .rs-industries { padding: 4rem var(--rs-gutter); }
  .rs-industries__head { margin-bottom: 2.25rem; text-align: left; }
  .rs-industries__grid { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- 22.7 Services list (dark, lines divider; page-assessments.png) ------------ */
.rs-related { position: relative; background: var(--rs-charcoal); color: var(--rs-white); text-align: center; }
.rs-related > .rs-shape { z-index: 2; }  /* the wedge paints over the lines (section-devider.png) */
.rs-related__inner {
  position: relative;
  z-index: 1;
  max-width: calc(var(--rs-container) + 2 * var(--rs-gutter));
  margin: 0 auto;
  padding: 30px var(--rs-gutter) 120px;
}
.rs-related__title { display: flex; flex-direction: column; align-items: center; margin: -110px 0 60px; color: var(--rs-white); text-wrap: balance; }
.rs-related__lines {                     /* three thin lines straddling the top edge (−80 / +80 px) */
  display: block;
  width: 24px;
  height: 160px;
  margin: 0 0 1.4em;
  color: var(--rs-primary);
  vertical-align: top;
}
.rs-related__intro {
  max-width: 46rem;
  margin: -1.5rem auto 3.5rem;
  color: var(--rs-text-on-dark-body);
  font-size: var(--rs-fs-lead);
  line-height: var(--rs-lh-copy);
}
.rs-related__group {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .35rem .85rem;
  margin: 3rem 0 2rem;
  padding-top: 2rem;
  border-top: 1px solid var(--rs-white-a12);
  color: var(--rs-white);
  font-size: var(--rs-fs-lg);            /* 1.25 rem / 900 */
  font-weight: var(--rs-fw-black);
  line-height: 1.3;
  text-align: left;
}
.rs-related__group a { color: var(--rs-primary); text-decoration: none; }
.rs-related__group a:hover { color: var(--rs-primary-200); text-decoration: underline; text-underline-offset: .2em; }
.rs-related__count { color: var(--rs-text-on-dark-muted); font-size: var(--rs-fs-small); font-weight: var(--rs-fw-bold); }
.rs-related__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 80px;
  row-gap: 80px;
  margin: 0;
  padding: 0;
  list-style: none;
  text-align: left;
}
.rs-related__card { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; margin: 0; }
.rs-related__card-title { display: flex; align-items: center; margin: 0 0 20px; color: var(--rs-white); font-size: var(--rs-fs-h4); font-weight: var(--rs-fw-black); line-height: 1.4; }
.rs-related__icon { flex: 0 0 auto; width: 2.6em; height: 2.6em; margin-right: 1em; color: var(--rs-primary); stroke-width: 1.5; }
.rs-related__text { margin: 0 0 1.5em; color: var(--rs-white); }
.rs-related__card .rs-link-more { margin-top: auto; }
.rs-related--compact .rs-related__icon { width: 2.2em; height: 2.2em; }
.rs-related--lg .rs-related__card-title { font-size: var(--rs-fs-h3); }
.rs-related--continued .rs-related__inner { padding-top: 0; }
.rs-related--continued .rs-related__title { margin-top: 0; }   /* lines stay inside */
@media (max-width: 1024px) { .rs-related__grid { column-gap: 3rem; row-gap: 64px; } }
@media (max-width: 767px) {
  .rs-related__inner { padding: 30px var(--rs-gutter) 80px; }
  .rs-related__grid { grid-template-columns: minmax(0, 1fr); row-gap: 56px; }
  .rs-related__title { margin-top: -90px; }
  .rs-related__lines { height: 130px; }
  .rs-related__intro { margin: -1rem auto 2.5rem; font-size: 1rem; }
  .rs-related__icon { width: 2em; height: 2em; margin-right: .75em; }
}

/* ---------- 22.8 Overview intro (block intro without TOC; 05 § 5.1) -------------------- */
.rs-overview-intro { position: relative; overflow: hidden; }
.rs-overview-intro::before {             /* dash cluster deco, 340 px, 20 % */
  content: "";
  position: absolute;
  inset: 0;
  background: url("../img/dash-cluster.svg") right bottom / 340px auto no-repeat;
  opacity: .2;
  pointer-events: none;
}
.rs-overview-intro__inner {
  position: relative;
  z-index: 1;
  max-width: calc(var(--rs-container) + 2 * var(--rs-gutter));
  margin: 0 auto;
  padding: 100px var(--rs-gutter) 90px;
}
.rs-overview-intro__copy { max-width: var(--rs-measure); }
.rs-overview-intro__title { margin: 0 0 1.25rem; text-wrap: balance; }
.rs-overview-intro__copy .rs-prose { color: var(--rs-text-soft); }
@media (max-width: 767px) {
  .rs-overview-intro__inner { padding: 64px var(--rs-gutter) 56px; }
  .rs-overview-intro::before { background-size: 220px auto; }
}

/* ---------- 22.9 Prose / include / stats bands ------------------------------------------- */
.rs-prose-section .rs-prose { max-width: none; }
.rs-include-section .rs-include { margin: 0; }
.rs-stats-band { padding-block: 3.5rem; }

/* ---------- 22.10 Membership (ACS; /ueber-uns/, /partner/) -------------------------------- */
.rs-membership__grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: clamp(2rem, 5vw, 4.5rem); }
.rs-membership__copy { min-width: 0; max-width: var(--rs-measure); }
.rs-membership__copy > p { color: var(--rs-ctx-text-soft); }
.rs-membership__copy > :last-child { margin-bottom: 0; }
.rs-membership__title { margin: 0 0 1rem; text-wrap: balance; }
.rs-membership__badge { justify-self: end; max-width: 100%; }
@media (max-width: 768px) {
  .rs-membership__grid { grid-template-columns: minmax(0, 1fr); }
  .rs-membership__badge { justify-self: start; }
}

/* ---------- 22.11 Contact page section ------------------------------------------------- */
.rs-contact { padding-block: clamp(4rem, 7vw, 6.5rem); }
.rs-contact__grid {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  align-items: start;
  gap: clamp(2.5rem, 5vw, 5rem);
}
.rs-contact__details { min-width: 0; }
.rs-contact__details > p { color: var(--rs-text-soft); }
.rs-contact__title { margin: 0 0 1.25rem; text-wrap: balance; }
.rs-contact__details > .rs-callout:last-child { margin-bottom: 0; }
@media (max-width: 1024px) { .rs-contact__grid { grid-template-columns: minmax(0, 1fr); } }

/* ---------- 22.12 Hotline box (emergency callout; danger) ----------------------------- */
.rs-emergency-callout { padding-block: clamp(3rem, 6vw, 4.5rem); }
.rs-hotline {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 1.5rem;
  padding: clamp(1.5rem, 3vw, 2.25rem);
  border: 1px solid var(--rs-danger-border);
  border-left: 6px solid var(--rs-danger);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-danger-soft);
  color: var(--rs-text);
}
.rs-hotline__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 50%;
  background: var(--rs-danger);
  color: var(--rs-on-danger);
}
.rs-hotline__icon .icon { width: 1.6rem; height: 1.6rem; }
.rs-hotline__body { min-width: 0; }
.rs-hotline__title { margin: 0 0 .4rem; color: var(--rs-text); font-size: var(--rs-fs-h3); font-weight: var(--rs-fw-black); line-height: 1.3; text-wrap: balance; }
.rs-hotline__text { margin: 0; color: var(--rs-text-soft); line-height: 1.6; }
.rs-hotline__text a:not(.rs-btn) {
  color: var(--rs-text);
  font-weight: var(--rs-fw-bold);
  text-decoration: underline;
  text-decoration-color: var(--rs-danger);
  text-underline-offset: .2em;
  white-space: nowrap;
}
.rs-hotline__text a:not(.rs-btn):hover { color: var(--rs-danger-hover); }
.rs-hotline__phone { font-size: clamp(1.15rem, 2.2vw, 1.5rem); white-space: nowrap; }
.rs-hotline__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; margin: 1rem 0 0; }
.rs-hotline__actions > .rs-alarm { margin-top: 0; }
.rs-hotline__actions > a:not([class]) { color: var(--rs-text); font-size: var(--rs-fs-ui); font-weight: var(--rs-fw-bold); }
.rs-hotline__actions > a:not([class]):hover { color: var(--rs-secondary-ink); }
.rs-hotline--compact { grid-template-columns: minmax(0, 1fr); gap: 0; margin: 0 0 1.5rem; padding: 1.25rem; }
.rs-hotline--compact .rs-hotline__title { font-size: var(--rs-fs-h5); }
.rs-hotline--compact .rs-hotline__text { font-size: var(--rs-fs-ui); }
@media (max-width: 768px) {
  .rs-hotline { grid-template-columns: minmax(0, 1fr); justify-items: start; gap: 1rem; }
  .rs-hotline__phone { width: 100%; }
}

/* ---------- 22.13 Emergency form (/notfall/) ------------------------------------------- */
.rs-emergency-form__grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(min(18rem, 100%), .85fr); align-items: start; gap: 2rem; }
.rs-emergency-form__aside { display: grid; gap: 1rem; min-width: 0; }
.rs-emergency-form__aside .rs-include { max-width: none; margin: 0; }
@media (min-width: 1025px) { .rs-emergency-form__aside { position: sticky; top: var(--rs-scroll-offset); } }
@media (max-width: 1024px) { .rs-emergency-form__grid { grid-template-columns: minmax(0, 1fr); } }   /* checklist below the form */

/* ---------- 22.14 Glossary index (/glossar/) ---------------------------------------------- */
.rs-glossary__heading { margin: 0 0 1.25rem; }
.rs-glossary__az { margin: 0 0 1.75rem; }
.rs-az { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; padding: 0; list-style: none; }
.rs-az > li { margin: 0; }
.rs-az a,
.rs-az__off {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.5rem;
  height: 2.5rem;
  padding: 0 .5rem;
  border-radius: var(--rs-radius-sm);
  font-size: var(--rs-fs-body);
  font-weight: var(--rs-fw-black);
  line-height: 1;
  text-transform: uppercase;
}
.rs-az a {
  border: 1px solid var(--rs-grey-400);
  background: var(--rs-white);
  color: var(--rs-secondary-ink);
  text-decoration: none;
  transition: background-color var(--rs-dur-fast) var(--rs-ease), border-color var(--rs-dur-fast) var(--rs-ease), color var(--rs-dur-fast) var(--rs-ease);
}
.rs-az a:hover { border-color: var(--rs-primary); background: var(--rs-primary-25); color: var(--rs-secondary-800); }
.rs-az a:focus-visible { outline: 3px solid var(--rs-focus); outline-offset: 2px; }
.rs-az__off { border: 1px dashed var(--rs-grey-300); color: var(--rs-text-muted); opacity: .6; }   /* letter without entries (inactive) */
.rs-glossary__search { display: grid; gap: .5rem; max-width: 36rem; margin: 0 0 2rem; }
.rs-glossary__search-label { color: var(--rs-text); font-size: var(--rs-fs-ui); font-weight: var(--rs-fw-bold); }
.rs-glossary__search .rs-form__control {
  min-height: 3rem;
  padding-left: 2.75rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23646B71' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E");
  background-position: .9rem center;
  background-repeat: no-repeat;
  background-size: 1.1rem;
}
.rs-glossary__count { min-height: 1.5em; margin: 0; color: var(--rs-text-muted); font-size: var(--rs-fs-small); }
.rs-glossary__list { margin-top: .5rem; }
.rs-glossary__group { margin: 0 0 2.5rem; scroll-margin-top: var(--rs-scroll-offset); }
.rs-glossary__group:last-of-type { margin-bottom: 0; }
.rs-glossary__letter {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 0 0 1rem;
  color: var(--rs-text);
  font-size: var(--rs-fs-h4);
  font-weight: var(--rs-fw-black);
  line-height: 1.4;
  text-transform: uppercase;
  scroll-margin-top: var(--rs-scroll-offset);
}
.rs-glossary__letter::after { content: ""; flex: 1 1 auto; height: 1px; background: var(--rs-grey-300); }
.rs-glossary__entries { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; margin: 0; padding: 0; list-style: none; }
@media (min-width: 1025px) { .rs-glossary__entries { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.rs-glossary__entry {                    /* .rs-card-soft look */
  display: flex;
  flex-direction: column;
  min-width: 0;
  margin: 0;
  padding: 1.5rem;
  border: 1px solid var(--rs-border-light);
  border-radius: var(--rs-radius-xl);
  background: var(--rs-white);
  box-shadow: var(--rs-shadow-card-soft);
}
.rs-glossary__term { margin: 0 0 .5rem; font-size: var(--rs-fs-card-title); font-weight: var(--rs-fw-bold); line-height: 1.3; }
.rs-glossary__term a { color: var(--rs-text); text-decoration: none; }
.rs-glossary__term a:hover { color: var(--rs-secondary-ink); text-decoration: underline; text-underline-offset: .2em; }
.rs-glossary__short { margin: 0 0 1.1rem; color: var(--rs-text-soft); font-size: 1rem; line-height: var(--rs-lh-copy); }
.rs-glossary__links { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem; margin: auto 0 0; }
.rs-glossary__links .rs-link-more { padding-bottom: 6px; font-size: var(--rs-fs-small); }
.rs-glossary__service {
  color: var(--rs-secondary-ink);
  font-size: var(--rs-fs-small);
  font-weight: var(--rs-fw-bold);
  text-decoration: underline;
  text-decoration-color: var(--rs-primary-a55);
  text-underline-offset: .2em;
}
.rs-glossary__service:hover { color: var(--rs-secondary-800); text-decoration-color: currentColor; }
.rs-glossary__empty { margin: 1rem 0 0; color: var(--rs-text-muted); }
.rs-glossary mark { padding: 0 .1em; border-radius: 2px; background: var(--rs-primary-a35); color: inherit; }

/* ---------- 22.15 Glossary term page ---------------------------------------------------- */
.rs-term-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; align-items: start; gap: 4rem; }
.rs-term__article { min-width: 0; max-width: var(--rs-measure); }
.rs-term__aside { display: grid; gap: 1.5rem; min-width: 0; }
@media (min-width: 1025px) { .rs-term__aside { position: sticky; top: var(--rs-scroll-offset); } }
@media (max-width: 1024px) { .rs-term-layout { grid-template-columns: minmax(0, 1fr); gap: 2.5rem; } }
.rs-term__facts {
  padding: 1.25rem 1.35rem;
  border-left: 4px solid var(--rs-primary);
  border-radius: 0 var(--rs-radius-md) var(--rs-radius-md) 0;
  background: var(--rs-grey);
}
.rs-term__facts-title {
  margin: 0 0 .85rem;
  color: var(--rs-secondary-ink);
  font-size: var(--rs-fs-label);
  font-weight: var(--rs-fw-black);
  letter-spacing: var(--rs-ls-label);
  line-height: 1.3;
  text-transform: uppercase;
}
.rs-term__facts-list { display: grid; gap: .8rem; margin: 0; }
.rs-term__facts-list > div { min-width: 0; }
.rs-term__facts-list dt { color: var(--rs-text-muted); font-size: var(--rs-fs-meta); font-weight: var(--rs-fw-bold); line-height: 1.4; }
.rs-term__facts-list dd { margin: .1rem 0 0; color: var(--rs-text); font-weight: var(--rs-fw-bold); line-height: 1.45; overflow-wrap: anywhere; }
.rs-term__service {
  padding: 1.5rem;
  border-top: 3px solid var(--rs-primary);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-charcoal);
  color: var(--rs-text-on-dark-body);
}
.rs-term__service .rs-eyebrow { margin-bottom: .45rem; }
.rs-term__service-title { margin: 0 0 1.1rem; color: var(--rs-white); font-size: var(--rs-fs-lg); font-weight: var(--rs-fw-black); line-height: 1.3; }
.rs-term__service .rs-btn--block { font-size: var(--rs-fs-ui); }
.rs-term__service-link {
  display: inline-block;
  margin-top: .9rem;
  color: var(--rs-primary);
  font-size: var(--rs-fs-small);
  font-weight: var(--rs-fw-bold);
  text-decoration: underline;
  text-underline-offset: .2em;
}
.rs-term__service-link:hover { color: var(--rs-primary-200); }

/* related terms + previous/next */
.rs-term-related__title { margin: 0 0 1.5rem; }
.rs-term-related .rs-link-strip__grid { max-width: none; margin: 0; }
.rs-pager { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; margin: 2.5rem 0 0; }
.rs-pager__link {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-areas: "icon dir" "icon label";
  align-items: center;
  column-gap: .85rem;
  row-gap: .1rem;
  flex: 0 1 calc(50% - .5rem);
  min-width: 0;
  min-height: 4.25rem;
  padding: .9rem 1.2rem;
  border: 1px solid var(--rs-grey-400);
  border-radius: var(--rs-radius-lg);
  background: var(--rs-white);
  color: var(--rs-text);
  text-decoration: none;
  transition: border-color var(--rs-dur-card) var(--rs-ease), box-shadow var(--rs-dur-card) var(--rs-ease);
}
.rs-pager__link--next {
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas: "dir icon" "label icon";
  margin-left: auto;                     /* stays right when there is no previous term */
  text-align: right;
}
.rs-pager__link > .icon { grid-area: icon; width: 1.25rem; height: 1.25rem; color: var(--rs-secondary); transition: transform var(--rs-dur-card) var(--rs-ease); }
.rs-pager__dir {
  grid-area: dir;
  color: var(--rs-text-muted);
  font-size: var(--rs-fs-label);
  font-weight: var(--rs-fw-bold);
  letter-spacing: .08em;
  line-height: 1.3;
  text-transform: uppercase;
}
.rs-pager__label { grid-area: label; font-weight: var(--rs-fw-bold); line-height: 1.35; overflow-wrap: anywhere; }
.rs-pager__link:hover { border-color: var(--rs-primary); box-shadow: var(--rs-shadow-card); color: var(--rs-text); }
.rs-pager__link--prev:hover > .icon { transform: translateX(-3px); }
.rs-pager__link--next:hover > .icon { transform: translateX(3px); }
.rs-pager__link:focus-visible { outline: 3px solid var(--rs-focus); outline-offset: 2px; }
.rs-term-related__back { margin: 2rem 0 0; }
.rs-term-related__back a { font-weight: var(--rs-fw-bold); }
@media (max-width: 600px) {
  .rs-pager__link { flex-basis: 100%; }
  .rs-pager__link--next { margin-left: 0; }
}

/* ---------- 22.16 Legal pages (B-18) -------------------------------------------------- */
.rs-legal {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 280px;
  align-items: start;
  gap: 4rem;
  max-width: calc(var(--rs-container) + 2 * var(--rs-gutter));
  margin: 0 auto;
  padding: 100px var(--rs-gutter) 80px;
}
.rs-legal--single,
.rs-legal:not(:has(> .rs-toc)) { grid-template-columns: minmax(0, 1fr); }
.rs-legal > .rs-toc { order: 2; width: 100%; margin: 0; }
.rs-legal > .rs-prose { min-width: 0; }
@media (min-width: 1025px) {
  .rs-legal > .rs-toc {
    position: sticky;
    top: var(--rs-scroll-offset);
    max-height: calc(100vh - var(--rs-scroll-offset) - 1.5rem);
    max-height: calc(100dvh - var(--rs-scroll-offset) - 1.5rem);
    overflow-y: auto;
    overscroll-behavior: contain;
  }
}
@media (max-width: 1024px) {
  .rs-legal { grid-template-columns: minmax(0, 1fr); gap: 2rem; }
  .rs-legal > .rs-toc { order: 0; max-width: none; }
}
@media (max-width: 767px) { .rs-legal { padding-block: 64px 48px; } }
.rs-legal__form { margin-top: 3rem; }

/* ---------- 22.17 Homepage overrides (03, B-23) ---------------------------------------- */
.rs-page-home .rs-shape--slant { --rs-shape-h: 50px; }   /* the homepage keeps 50 px on phones */
.rs-page-home .rs-form-band { margin-top: -28px; }       /* the contact band overlaps the section above */
@media (max-width: 767px) { .rs-page-home .rs-form-band { margin-bottom: -30px; } }

/* ===== 23 Behaviour layer ===== */
/* Remaining 06 rules (blocks 1, 8–10). The modules stay functional in main.js;
   A currently emits none of [data-reveal], [data-count-to], [data-lines]. */

/* smooth scrolling after "load" (the initial #hash jump stays instant) */
@media (prefers-reduced-motion: no-preference) {
  html.smooth-scroll { scroll-behavior: smooth; }
}

/* reveal on scroll (proposal) – only when main.js marks the page ready */
@media (prefers-reduced-motion: no-preference) {
  [data-reveal] {
    transition:
      opacity var(--rs-dur-reveal) var(--rs-ease-out) var(--reveal-delay, 0ms),
      transform var(--rs-dur-reveal) var(--rs-ease-out) var(--reveal-delay, 0ms);
  }
  .reveal-ready [data-reveal]:not(.is-revealed) {
    opacity: 0;
    transform: var(--reveal-from, translateY(var(--rs-shift)));
  }
  [data-reveal="down"]  { --reveal-from: translateY(calc(-1 * var(--rs-shift))); }
  [data-reveal="left"]  { --reveal-from: translateX(var(--rs-shift)); }
  [data-reveal="right"] { --reveal-from: translateX(calc(-1 * var(--rs-shift))); }
  [data-reveal="fade"]  { --reveal-from: none; }
  [data-reveal="scale"] { --reveal-from: scale(.9); }
}

/* count-up numbers (proposal; confirmed values only) */
[data-count-to] { display: inline-block; font-variant-numeric: tabular-nums; text-align: start; }

/* vertical "data lines" – optional flow animation of the static rs-lines drawing (06 § 4.12) */
.rs-lines { display: block; color: var(--rs-primary); line-height: 0; }
.rs-lines svg { display: block; width: 24px; height: 160px; overflow: visible; }
.rs-lines line { stroke: currentColor; stroke-width: 1.3; stroke-linecap: butt; stroke-dashoffset: 0; }
.rs-lines .rs-lines__l1 { stroke-dasharray: 0 11.98 50.25 18.52 58.42 20.83; --flow: 3.4s; }
.rs-lines .rs-lines__l2 { stroke-dasharray: 118.26 11.37 30.37 0; --flow: 2.6s; }
.rs-lines .rs-lines__l3 { stroke-dasharray: 0 26.74 45.13 24.43 51.73 11.97; --flow: 3.8s; }
@keyframes rs-line-flow {
  from { stroke-dashoffset: 0; }
  to   { stroke-dashoffset: -160; }      /* the pattern travels one full cycle */
}
@media (prefers-reduced-motion: no-preference) {
  .rs-lines.is-animating svg {
    -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 12%, #000 88%, transparent 100%);
            mask-image: linear-gradient(to bottom, transparent 0, #000 12%, #000 88%, transparent 100%);
  }
  .rs-lines.is-animating line { animation: rs-line-flow var(--flow, 3.2s) linear infinite; }
}

/* filter highlight (glossary) */
[data-filter-item] mark { padding: 0 .1em; border-radius: 2px; background: var(--rs-primary-a32); color: inherit; }

/* ===== 24 Print ===== */
/* 08 B-21: pages print as plain documents (A4, black on white); the NDA preview
   prints only the document (nda.js sets html.print-doc before window.print()). */
@media print {
  @page { size: A4; margin: 18mm 16mm 20mm; }
  *,
  *::before,
  *::after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
    animation: none !important;
    transition: none !important;
  }
  html { font-size: 10.5pt; }
  .rs-page { display: block; min-height: 0; }   /* no flex shell on paper */
  body::before { content: "Rootsektor IT-Security GmbH · www.rootsektor.de"; display: block; margin: 0 0 8mm; font-weight: 900; }
  .site-top,
  .topbar,
  .nav__drawer,
  .nav__backdrop,
  .mnav,
  .rs-alarm,
  .rs-skip-link,
  .rs-consent,
  .rs-lang-hint,
  .rs-lang,
  .rs-toast-region,
  .rs-back-to-top,
  [data-back-to-top],
  .rs-shape,
  .rs-hero::after,
  .rs-page-hero::before,
  .rs-overview-intro::before,
  .mega__cta::before,
  .rs-video__poster,
  .rs-video__notice,
  .rs-toc,
  .rs-form-card,
  .rs-form-band,
  .rs-wizard__nav,
  .rs-stepper,
  .rs-btn-round,
  .rs-footer__main,
  .rs-footer__extra,
  .rs-ptabs__list,
  .rs-lines,
  .rs-related__lines,
  .rs-vulns__accent,
  .rs-video__figure:has(.rs-media-visual),
  .rs-media-visual,
  .rs-report__visual,
  .rs-hero__network,
  .rs-home-hero__slant,
  .rs-tip__bubble { display: none !important; }
  .rs-hero,
  .rs-home-hero,
  .rs-page-hero,
  .rs-section,
  [class*="rs-section--"] { padding-block: 0 1.5rem !important; }
  .rs-home-hero__inner,
  .rs-page-hero__inner { padding: 0 0 1rem !important; }
  .rs-tone-dark,
  .rs-tone-grey { border: 0 !important; }
  .rs-page-hero__box,
  .rs-panel,
  .rs-card,
  .rs-service-card,
  .rs-why-card,
  .rs-industry-card,
  .rs-icon-card,
  .rs-hotline,
  .rs-cta-panel { border: 1px solid #999 !important; }
  a { text-decoration: underline; }
  .rs-prose a[href^="http"]::after,
  .rs-prose a[href^="mailto:"]::after { content: " (" attr(href) ")"; font-size: .85em; overflow-wrap: anywhere; }
  h1, h2, h3, h4 { break-after: avoid; }
  img, svg, figure, tr, .rs-card, .rs-panel, .rs-vuln-card, .rs-step, .rs-callout, .rs-faq__item { break-inside: avoid; }
  thead { display: table-header-group; }
  [role="tabpanel"][hidden] { display: block !important; }
  .rs-btn { padding: 0 !important; border: 0 !important; text-decoration: underline; }
  .rs-table-wrap { overflow: visible !important; border: 0 !important; }
  .rs-table { min-width: 0 !important; }

  /* NDA preview: print only the document */
  html.print-doc body::before,
  html.print-doc body > :not(.rs-doc-dialog) { display: none !important; }
  html.print-doc .rs-doc-dialog {
    position: static !important;
    display: block !important;
    width: auto !important;
    height: auto !important;
    max-height: none !important;
    margin: 0 !important;
    overflow: visible !important;
    border: 0 !important;
  }
  html.print-doc .rs-doc-dialog::backdrop { display: none; }
  html.print-doc .rs-doc-dialog__bar,
  html.print-doc .rs-doc-dialog__tools,
  html.print-doc .rs-toast-region { display: none !important; }
  html.print-doc .rs-doc-dialog__body { padding: 0 !important; overflow: visible !important; }
  html.print-doc .rs-doc { max-width: none; padding: 0; border: 0; font-size: 11pt; }
}

/* ===== 25 Reduced Motion ===== */
/* Global safety net (06 block 19 rewritten for the surviving classes, C-85):
   no animations/transitions, no hover lifts, static alarm dot, blinking spinner. */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    animation-delay: 0s !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    transition-delay: 0s !important;
  }
  .rs-alarm__pulse { animation: none !important; }                       /* static dot */
  .rs-spinner::before { animation: rs-blink 2000ms linear infinite !important; }   /* CF7: blink instead of spin */
  .rs-btn:hover,
  .rs-btn-round,
  a:hover > .rs-btn-round,
  .rs-service-card:hover,
  .rs-service-card:hover .rs-icon-tile--dark,
  .rs-industry-card:hover,
  .rs-industry-card:hover .rs-icon-tile--dark,
  .rs-link-card:hover,
  a.rs-icon-card:hover,
  .mega__cta-btn:hover,
  .mega__card:hover .mega__arrow,
  .mega__row:hover .mega__arrow,
  .rs-footer__link:hover,
  .rs-footer__link:focus-visible,
  .rs-footer__social:hover,
  .rs-link-more:hover > .icon,
  .rs-video__poster:hover .rs-video__play { transform: none !important; }
  .mega:not([hidden]),
  .rs-consent:not([hidden]),
  .rs-lang-hint:not([hidden]),
  .rs-toast,
  .rs-doc-dialog[open],
}

