{"id":17567,"date":"2025-02-24T16:35:56","date_gmt":"2025-02-24T15:35:56","guid":{"rendered":"https:\/\/www.codewerk.de\/portfolio\/software-products-and-solutions\/trdp-validation-test\/"},"modified":"2026-08-29T13:55:03","modified_gmt":"2026-08-29T11:55:03","slug":"trdp-validation-test","status":"publish","type":"page","link":"https:\/\/www.codewerk.de\/en\/portfolio\/software-products-and-solutions\/trdp-validation-test\/","title":{"rendered":"TRDP validation test"},"content":{"rendered":"<section class=\"cw-band cw-band--navy cw-hero\">\n<div class=\"cw-inner cw-hero__raster\">\n<div class=\"cw-hero__text\">\n<p class=\"cw-vorzeile cw-vorzeile--akzent\">Testing as a Service<\/p>\n<h1 class=\"cw-hero__titel\">TRDP conformance test to IEC 61375-2-8 &ndash; as a service<\/h1>\n<p class=\"cw-hero__lead\">For subsystem and device manufacturers, OEMs and integrators: the<br \/>\n        independent, reproducible proof that a device operates in conformance with the standard and<br \/>\n        interoperably within the train communication network &ndash; without building a test system<br \/>\n        of your own.<\/p>\n<div class=\"cw-aktionen\">\n        <a class=\"cw-knopf\" href=\"#kontakt\" data-cw-track=\"trdp-anker-kontakt\">Request a test<\/a><br \/>\n        <a class=\"cw-anker\" href=\"#ablauf\" data-cw-track=\"trdp-anker-ablauf\">How the test works<\/a>\n      <\/div>\n<ul class=\"cw-chips\">\n<li class=\"cw-chip\">IEC 61375-2-8<\/li>\n<li class=\"cw-chip\">ISO 9001<\/li>\n<li class=\"cw-chip\">ISO 27001<\/li>\n<li class=\"cw-chip\">TCN &middot; TCNOpen<\/li>\n<li class=\"cw-chip\">Vendor-neutral<\/li>\n<\/ul><\/div>\n<p>    <img decoding=\"async\" class=\"cw-hero__bild\" src=\"&#47;&#119;&#x70;-&#99;&#x6f;&#x6e;t&#101;&#x6e;&#x74;\/&#117;&#x70;&#x6c;o&#97;&#x64;&#x73;\/&#50;&#x30;&#x32;5&#47;&#x30;2&#47;&#50;&#x35;0&#50;&#x30;&#x35;_&#67;&#x6f;&#x64;e&#119;&#x65;&#x72;k&#95;&#x50;&#x72;o&#100;&#x75;&#x6b;&#116;&#100;&#x61;r&#115;&#x74;&#x65;l&#108;&#x75;&#x6e;g&#95;&#x53;&#x6f;f&#116;&#x73;&#x69;b&#97;&#x73;&#x5f;T&#82;&#x44;P&#95;&#86;&#x61;l&#105;&#x64;&#x69;e&#114;&#x75;&#x6e;g&#115;&#x74;&#x65;s&#116;&#x40;&#x32;x&#46;&#x70;&#x6e;&#103;\" width=\"370\" height=\"666\" alt=\"\" data-no-lazy=\"1\">\n  <\/div>\n<\/section>\n<section class=\"cw-band cw-band--weiss\">\n<div class=\"cw-inner\">\n<p class=\"cw-vorzeile\">The situation<\/p>\n<h2>Why conformance decides whether a project succeeds<\/h2>\n<p class=\"cw-lead\">One standard, different interpretations: that is exactly where<br \/>\n      interoperability problems come from, and they often surface late &ndash; during integration,<br \/>\n      in the interplay with devices from other suppliers. That drives up development effort,<br \/>\n      delays projects and can put successful completion at risk.<\/p>\n<p class=\"cw-callout\">For safety-critical and time-critical systems in particular,<br \/>\n      &ldquo;it works&rdquo; is not enough. What counts is the evidence that a device really does<br \/>\n      behave in conformance with the standard and interoperably.<\/p>\n<\/p><\/div>\n<\/section>\n<section class=\"cw-band cw-band--muster\">\n<div class=\"cw-inner\">\n<p class=\"cw-vorzeile\">Test scope<\/p>\n<h2>What we test<\/h2>\n<div class=\"cw-karten cw-karten--3\">\n<article class=\"cw-karte\">\n<h3 class=\"cw-karte__titel\">Communication behaviour<\/h3>\n<p>Process data (PD: publisher\/subscriber, PD request\/reply) and message data<br \/>\n          (MD: notification, request-reply, request-reply-confirm).<\/p>\n<\/article>\n<article class=\"cw-karte\">\n<h3 class=\"cw-karte__titel\">Data packets and addressing<\/h3>\n<p>PDU structure with header, sequence counter and topology counters (etbTopoCnt,<br \/>\n          opTrnTopoCnt), ComId and dataset, plus the well-known ports PD 17224 and MD 17225.<\/p>\n<\/article>\n<article class=\"cw-karte\">\n<h3 class=\"cw-karte__titel\">Data encoding<\/h3>\n<p>Endianness, alignment, data length and data type.<\/p>\n<\/article>\n<article class=\"cw-karte\">\n<h3 class=\"cw-karte__titel\">Error handling and redundancy<\/h3>\n<p>Response to error conditions, including behaviour on error message.<\/p>\n<\/article>\n<article class=\"cw-karte\">\n<h3 class=\"cw-karte__titel\">Safe data transmission (SDTv2)<\/h3>\n<p>Testing of the safety layer &ndash; safety attributes, error detection and error<br \/>\n          response.<\/p>\n<\/article>\n<article class=\"cw-karte\">\n<h3 class=\"cw-karte__titel\">Interoperability<\/h3>\n<p>Interaction with devices tested to the same level, not just within one setup.<\/p>\n<\/article><\/div>\n<\/p><\/div>\n<\/section>\n<section class=\"cw-band cw-band--weiss\" id=\"ablauf\">\n<div class=\"cw-inner\">\n<p class=\"cw-vorzeile\">Procedure<\/p>\n<h2>How the test works<\/h2>\n<ol class=\"cw-schritte\">\n<li class=\"cw-schritt\">\n        <span class=\"cw-schritt__nr\" aria-hidden=\"true\"><\/span><\/p>\n<h3 class=\"cw-schritt__titel\">Test specification<\/h3>\n<p>We derive the test cases directly from IEC 61375-2-8 and adapt them to the project<br \/>\n          requirements where needed.<\/p>\n<\/li>\n<li class=\"cw-schritt\">\n        <span class=\"cw-schritt__nr\" aria-hidden=\"true\"><\/span><\/p>\n<h3 class=\"cw-schritt__titel\">Integration<\/h3>\n<p>A predefined REST API test interface connects the implementation under test (IuT)<br \/>\n          &ndash; matching the project application.<\/p>\n<\/li>\n<li class=\"cw-schritt\">\n        <span class=\"cw-schritt__nr\" aria-hidden=\"true\"><\/span><\/p>\n<h3 class=\"cw-schritt__titel\">Automated execution<\/h3>\n<p>The test runs reproducibly on our automated test system, independently of the<br \/>\n          operating system of the implementation.<\/p>\n<\/li>\n<li class=\"cw-schritt\">\n        <span class=\"cw-schritt__nr\" aria-hidden=\"true\"><\/span><\/p>\n<h3 class=\"cw-schritt__titel\">Test report<\/h3>\n<p>The result is solid evidence of conformance, with detailed feedback on every<br \/>\n          deviation from the expected behaviour.<\/p>\n<\/li>\n<\/ol><\/div>\n<\/section>\n<section class=\"cw-band cw-band--navy\">\n<div class=\"cw-inner\">\n<p class=\"cw-vorzeile cw-vorzeile--akzent\">The difference<\/p>\n<h2>Why test with Codewerk?<\/h2>\n<ul class=\"cw-punkte\">\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p><strong>A central, independent body<\/strong> &ndash; vendor-neutral evidence that holds up with OEMs, integrators and operators.<\/p>\n<\/p><\/div>\n<\/li>\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p><strong>The test environment is already in place<\/strong> &ndash; ready to run, reproducible, derived directly from the standard.<\/p>\n<\/p><\/div>\n<\/li>\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p><strong>Purely software-based<\/strong> &ndash; no test system of your own, no additional hardware.<\/p>\n<\/p><\/div>\n<\/li>\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p><strong>Integration and testing from one source<\/strong> &ndash; no break between development and proof of conformance.<\/p>\n<\/p><\/div>\n<\/li>\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p><strong>Early instead of expensive<\/strong> &ndash; the earlier deviations surface, the lower the follow-up cost.<\/p>\n<\/p><\/div>\n<\/li>\n<\/ul><\/div>\n<\/section>\n<section class=\"cw-band cw-band--soft\">\n<div class=\"cw-inner\">\n<p class=\"cw-vorzeile\">Audience<\/p>\n<h2>Who the test is for<\/h2>\n<p class=\"cw-lead\">For subsystem and device manufacturers building devices or applications with<br \/>\n      TRDP who need solid evidence of conformance for integration and acceptance &ndash; and for<br \/>\n      OEMs and integrators who want to de-risk supplied components.<\/p>\n<\/p><\/div>\n<\/section>\n<section class=\"cw-band cw-band--weiss\">\n<div class=\"cw-inner\">\n<p class=\"cw-vorzeile\">Questions and answers<\/p>\n<h2>Frequently asked questions<\/h2>\n<div class=\"cw-cra-acc cw-cra-acc--schlicht\" data-allow-multiple=\"false\">\n\t\t\t\t\t\t\t\t<div class=\"cw-cra-acc__item\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"cw-cra-acc__header\"\n\t\t\t\t\tid=\"cw-acc-2-h-0\"\n\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\taria-controls=\"cw-acc-2-p-0\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t<span class=\"cw-cra-acc__headtext\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"cw-cra-acc__title\">Is proof of conformance required before acceptance?<\/h3>\n\t\t\t\t\t<\/span>\n\n\t\t\t\t\t<span class=\"cw-cra-acc__toggle\" aria-hidden=\"true\">\n\t\t\t\t\t\t<svg class=\"cw-cra-acc__toggle-icon\" viewBox=\"0 0 32 32\" width=\"32\" height=\"32\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t<line x1=\"0\" y1=\"15.4951\" x2=\"32\" y2=\"15.4951\" stroke=\"currentColor\"\/>\n\t\t\t\t\t\t\t<line x1=\"15.4951\" y1=\"32\" x2=\"15.4951\" y2=\"0\" stroke=\"currentColor\"\/>\n\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t<\/span>\n\t\t\t\t<\/button>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"cw-cra-acc__panel\"\n\t\t\t\t\tid=\"cw-acc-2-p-0\"\n\t\t\t\t\trole=\"region\"\n\t\t\t\t\taria-labelledby=\"cw-acc-2-h-0\"\n\t\t\t\t\thidden\t\t\t\t>\n\t\t\t\t\t<div class=\"cw-cra-acc__panel-wrap\">\n\t\t\t\t\t\t<div class=\"cw-cra-acc__panel-inner\">\n\t\t\t\t\t\t\t<\/p>\n<p>As a rule, yes. OEMs, integrators or operators require evidence that the device behaves<br \/>\n          in conformance with the standard inside the TCN.<\/p>\n<p>      \t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"cw-cra-acc__item\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"cw-cra-acc__header\"\n\t\t\t\t\tid=\"cw-acc-2-h-1\"\n\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\taria-controls=\"cw-acc-2-p-1\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t<span class=\"cw-cra-acc__headtext\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"cw-cra-acc__title\">What is the difference between IEC 61375-2-3 and IEC 61375-2-8?<\/h3>\n\t\t\t\t\t<\/span>\n\n\t\t\t\t\t<span class=\"cw-cra-acc__toggle\" aria-hidden=\"true\">\n\t\t\t\t\t\t<svg class=\"cw-cra-acc__toggle-icon\" viewBox=\"0 0 32 32\" width=\"32\" height=\"32\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t<line x1=\"0\" y1=\"15.4951\" x2=\"32\" y2=\"15.4951\" stroke=\"currentColor\"\/>\n\t\t\t\t\t\t\t<line x1=\"15.4951\" y1=\"32\" x2=\"15.4951\" y2=\"0\" stroke=\"currentColor\"\/>\n\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t<\/span>\n\t\t\t\t<\/button>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"cw-cra-acc__panel\"\n\t\t\t\t\tid=\"cw-acc-2-p-1\"\n\t\t\t\t\trole=\"region\"\n\t\t\t\t\taria-labelledby=\"cw-acc-2-h-1\"\n\t\t\t\t\thidden\t\t\t\t>\n\t\t\t\t\t<div class=\"cw-cra-acc__panel-wrap\">\n\t\t\t\t\t\t<div class=\"cw-cra-acc__panel-inner\">\n\t\t\t\t\t\t\t<\/p>\n<p>IEC 61375-2-3 describes the TRDP communication and application profile,<br \/>\n          IEC 61375-2-8 the conformance test specification. Testing is done against 61375-2-8.<\/p>\n<p>      \t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"cw-cra-acc__item\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"cw-cra-acc__header\"\n\t\t\t\t\tid=\"cw-acc-2-h-2\"\n\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\taria-controls=\"cw-acc-2-p-2\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t<span class=\"cw-cra-acc__headtext\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"cw-cra-acc__title\">Does the device need a particular operating system?<\/h3>\n\t\t\t\t\t<\/span>\n\n\t\t\t\t\t<span class=\"cw-cra-acc__toggle\" aria-hidden=\"true\">\n\t\t\t\t\t\t<svg class=\"cw-cra-acc__toggle-icon\" viewBox=\"0 0 32 32\" width=\"32\" height=\"32\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t<line x1=\"0\" y1=\"15.4951\" x2=\"32\" y2=\"15.4951\" stroke=\"currentColor\"\/>\n\t\t\t\t\t\t\t<line x1=\"15.4951\" y1=\"32\" x2=\"15.4951\" y2=\"0\" stroke=\"currentColor\"\/>\n\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t<\/span>\n\t\t\t\t<\/button>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"cw-cra-acc__panel\"\n\t\t\t\t\tid=\"cw-acc-2-p-2\"\n\t\t\t\t\trole=\"region\"\n\t\t\t\t\taria-labelledby=\"cw-acc-2-h-2\"\n\t\t\t\t\thidden\t\t\t\t>\n\t\t\t\t\t<div class=\"cw-cra-acc__panel-wrap\">\n\t\t\t\t\t\t<div class=\"cw-cra-acc__panel-inner\">\n\t\t\t\t\t\t\t<\/p>\n<p>No. The test is independent of the operating system.<\/p>\n<p>      \t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"cw-cra-acc__item\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"cw-cra-acc__header\"\n\t\t\t\t\tid=\"cw-acc-2-h-3\"\n\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\taria-controls=\"cw-acc-2-p-3\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t<span class=\"cw-cra-acc__headtext\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"cw-cra-acc__title\">When should testing take place?<\/h3>\n\t\t\t\t\t<\/span>\n\n\t\t\t\t\t<span class=\"cw-cra-acc__toggle\" aria-hidden=\"true\">\n\t\t\t\t\t\t<svg class=\"cw-cra-acc__toggle-icon\" viewBox=\"0 0 32 32\" width=\"32\" height=\"32\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t<line x1=\"0\" y1=\"15.4951\" x2=\"32\" y2=\"15.4951\" stroke=\"currentColor\"\/>\n\t\t\t\t\t\t\t<line x1=\"15.4951\" y1=\"32\" x2=\"15.4951\" y2=\"0\" stroke=\"currentColor\"\/>\n\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t<\/span>\n\t\t\t\t<\/button>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"cw-cra-acc__panel\"\n\t\t\t\t\tid=\"cw-acc-2-p-3\"\n\t\t\t\t\trole=\"region\"\n\t\t\t\t\taria-labelledby=\"cw-acc-2-h-3\"\n\t\t\t\t\thidden\t\t\t\t>\n\t\t\t\t\t<div class=\"cw-cra-acc__panel-wrap\">\n\t\t\t\t\t\t<div class=\"cw-cra-acc__panel-inner\">\n\t\t\t\t\t\t\t<\/p>\n<p>As early as possible. Faults found late cause the highest follow-up cost and put<br \/>\n          schedules at risk.<\/p>\n<p>      \t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"cw-cra-acc__item\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"cw-cra-acc__header\"\n\t\t\t\t\tid=\"cw-acc-2-h-4\"\n\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\taria-controls=\"cw-acc-2-p-4\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t<span class=\"cw-cra-acc__headtext\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"cw-cra-acc__title\">What is delivered at the end?<\/h3>\n\t\t\t\t\t<\/span>\n\n\t\t\t\t\t<span class=\"cw-cra-acc__toggle\" aria-hidden=\"true\">\n\t\t\t\t\t\t<svg class=\"cw-cra-acc__toggle-icon\" viewBox=\"0 0 32 32\" width=\"32\" height=\"32\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t<line x1=\"0\" y1=\"15.4951\" x2=\"32\" y2=\"15.4951\" stroke=\"currentColor\"\/>\n\t\t\t\t\t\t\t<line x1=\"15.4951\" y1=\"32\" x2=\"15.4951\" y2=\"0\" stroke=\"currentColor\"\/>\n\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t<\/span>\n\t\t\t\t<\/button>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"cw-cra-acc__panel\"\n\t\t\t\t\tid=\"cw-acc-2-p-4\"\n\t\t\t\t\trole=\"region\"\n\t\t\t\t\taria-labelledby=\"cw-acc-2-h-4\"\n\t\t\t\t\thidden\t\t\t\t>\n\t\t\t\t\t<div class=\"cw-cra-acc__panel-wrap\">\n\t\t\t\t\t\t<div class=\"cw-cra-acc__panel-inner\">\n\t\t\t\t\t\t\t<\/p>\n<p>A detailed test report as traceable evidence of conformance.<\/p>\n<p>      \t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<\/div><\/div>\n<\/section>\n<section class=\"cw-band cw-band--soft\">\n<div class=\"cw-inner\">\n<h2>A dependable partner<\/h2>\n<ul class=\"cw-trustbar\">\n<li>ISO 9001 certified<\/li>\n<li>ISO 27001 certified<\/li>\n<li>Active in the TCN &middot; TCNOpen community<\/li>\n<li>Partner in the Siemens Xcelerator ecosystem<\/li>\n<\/ul><\/div>\n<\/section>\n<section class=\"cw-band cw-band--weiss\">\n<div class=\"cw-inner\">\n<p class=\"cw-vorzeile\">More products and services<\/p>\n<h2>Related offerings<\/h2>\n<div class=\"cw-produkte\">\n<article class=\"cw-produkt\">\n        <img decoding=\"async\" src=\"&#47;&#x77;&#112;&#x2d;&#99;&#x6f;&#110;&#x74;e&#x6e;t&#x2f;u&#x70;l&#111;&#x61;&#100;&#x73;&#47;&#x32;&#48;&#x32;&#53;&#x2f;0&#x32;\/&#x32;5&#x30;2&#48;&#x35;&#95;&#x43;&#111;&#x64;&#101;&#x77;&#101;&#x72;k&#x5f;P&#x72;o&#x64;u&#107;&#x74;&#100;&#x61;&#114;&#x73;&#116;&#x65;&#108;&#x6c;u&#x6e;g&#x5f;S&#111;f&#116;&#x73;&#105;&#x62;&#97;&#x73;&#95;&#x50;&#78;&#x5f;V&#x61;l&#x69;d&#105;e&#114;&#x75;&#110;&#x67;&#115;&#x74;&#101;&#x73;t&#x40;2&#x78;&#46;&#x70;n&#103;\" width=\"370\" height=\"666\" alt=\"\" loading=\"lazy\" data-no-lazy=\"1\"><\/p>\n<h3 class=\"cw-produkt__titel\">SOFTSIBAS PN validation test<\/h3>\n<p>Proven conformity with SIBAS PN through tests by PROFINET, PROFISAFE, services and<br \/>\n          project planning.<\/p>\n<p>        <a class=\"cw-produkt__link\" href=\"https:\/\/www.codewerk.de\/en\/portfolio\/software-products-and-solutions\/softsibas-pn-validation-test\/\" data-cw-track=\"trdp-produkt-pn-validierungstest\">Learn more<\/a><br \/>\n      <\/article>\n<article class=\"cw-produkt\">\n        <img decoding=\"async\" src=\"&#47;w&#x70;-&#x63;o&#x6e;t&#x65;n&#x74;\/&#x75;&#112;&#x6c;&#111;&#x61;&#100;&#x73;&#47;&#x32;&#48;&#x32;&#53;&#x2f;&#48;2&#x2f;2&#x35;0&#x31;3&#x31;_&#x43;o&#x64;&#101;&#x77;&#101;&#x72;&#107;&#x5f;&#80;&#x72;&#111;&#x64;&#117;&#x6b;&#116;d&#x61;r&#x73;t&#x65;l&#x6c;u&#x6e;g&#x5f;&#83;&#x6f;&#102;&#x74;&#115;&#x69;&#98;&#x61;&#115;&#x5f;&#84;&#x52;&#68;P&#x40;2&#x78;&#46;&#x70;n&#x67;\" width=\"319\" height=\"629\" alt=\"\" loading=\"lazy\" data-no-lazy=\"1\"><\/p>\n<h3 class=\"cw-produkt__titel\">SOFTSIBAS TRDP Stack<\/h3>\n<p>With our software-based solution SOFTSIBAS TRDP Stack, you don&rsquo;t need additional hardware.<\/p>\n<p>        <a class=\"cw-produkt__link\" href=\"https:\/\/www.codewerk.de\/en\/portfolio\/software-products-and-solutions\/softsibas-trdp-stack\/\" data-cw-track=\"trdp-produkt-trdp-stack\">View product<\/a><br \/>\n      <\/article>\n<article class=\"cw-produkt\">\n        <img decoding=\"async\" src=\"&#47;&#x77;p&#x2d;c&#111;&#x6e;&#116;&#x65;n&#116;&#x2f;&#117;&#x70;l&#x6f;&#x61;&#100;&#x73;\/&#x32;0&#50;&#x35;&#47;&#x30;2&#47;&#x32;&#53;&#x30;1&#51;&#x31;&#95;&#x43;o&#x64;&#x65;&#119;&#x65;r&#x6b;_&#80;&#x72;&#111;&#x64;u&#107;&#x74;&#100;&#x61;r&#115;&#x74;&#101;&#x6c;l&#x75;n&#103;&#x5f;S&#x6f;f&#116;&#x73;&#105;&#x62;a&#115;&#x5f;&#80;&#x4e;&#64;&#x32;&#x78;&#46;&#x70;n&#x67;\" width=\"318\" height=\"629\" alt=\"\" loading=\"lazy\" data-no-lazy=\"1\"><\/p>\n<h3 class=\"cw-produkt__titel\">SOFTSIBAS PN Stack<\/h3>\n<p>With our software-based solution SOFTSIBAS PN Stack, you don&rsquo;t need additional hardware.<\/p>\n<p>        <a class=\"cw-produkt__link\" href=\"https:\/\/www.codewerk.de\/en\/portfolio\/software-products-and-solutions\/softsibas-pn-stack\/\" data-cw-track=\"trdp-produkt-pn-stack\">View product<\/a><br \/>\n      <\/article>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<section class=\"cw-band cw-band--navy cw-abschluss\" id=\"kontakt\">\n<div class=\"cw-inner cw-kontakt__raster\">\n<div>\n<p class=\"cw-vorzeile cw-vorzeile--akzent\">Contact<\/p>\n<h2>Ready for proof of conformance?<\/h2>\n<p class=\"cw-lead\">Outline the project briefly &ndash; device or application, planned<br \/>\n        acceptance date. We will come back with the next steps.<\/p>\n<p class=\"cw-notiz\">Not there yet? Download the<br \/>\n        <a href=\"\/wp-content\/uploads\/2026\/08\/codewerk-trdp-konformitaetscheckliste-2026-08.pdf\" download data-cw-track=\"trdp-checkliste-download\">TRDP conformance checklist<\/a><br \/>\n        (PDF, 95&nbsp;KB) &ndash; it shows at a glance what solid evidence of conformance<br \/>\n        covers.<\/p>\n<\/p><\/div>\n<div class=\"cw-formular\">\n      \t\t<form\n\t\t\tclass=\"cod-form cod-form--cod_smart_contact_en cod-form--inline\"\n\t\t\tdata-cod-form-id=\"cod_smart_contact_en\"\n\t\t\tdata-cod-form-mode=\"inline\"\n\t\t\tdata-cod-form-language=\"en\"\n\t\t\tdata-cod-initial-step=\"1\"\n\t\t\tdata-cod-topic-copy=\"{&quot;cyber&quot;:{&quot;step_title&quot;:&quot;Sign up now and get a free initial consultation&quot;,&quot;submit_label&quot;:&quot;Request free consultation&quot;,&quot;field_hints&quot;:{&quot;phone&quot;:&quot;For any questions about your enquiry&quot;},&quot;after_submit&quot;:{&quot;text&quot;:&quot;We will review your enquiry as soon as possible and call you back within one working day.&quot;},&quot;trust&quot;:[&quot;Over 21 security projects successfully delivered&quot;,&quot;Certified partner of Siemens AG&quot;]},&quot;product&quot;:{&quot;step_title&quot;:&quot;Sign up now and get a free initial consultation&quot;,&quot;submit_label&quot;:&quot;Request free consultation&quot;,&quot;field_hints&quot;:{&quot;phone&quot;:&quot;For any questions about your enquiry&quot;},&quot;after_submit&quot;:{&quot;text&quot;:&quot;We will review your enquiry as soon as possible and call you back within one working day.&quot;},&quot;trust&quot;:[&quot;ISO 9001 certified&quot;,&quot;ISO 27001 certified&quot;,&quot;Active in the TCN \u00b7 TCNOpen community&quot;]}}\"\t\t\tmethod=\"post\"\n\t\t\tnovalidate\n\t\t>\n\t\t\t\t\t\t<div class=\"cod-form__honeypot\" aria-hidden=\"true\" style=\"position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;\">\n\t\t\t\t<label>\n\t\t\t\t\tBitte freilassen\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tname=\"cod_forms_hp\"\n\t\t\t\t\t\tvalue=\"\"\n\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\/>\n\t\t\t\t<\/label>\n\t\t\t<\/div>\n\n\t\t\t<input type=\"hidden\" name=\"cod_forms_render_at\" value=\"1792817626813\" \/>\n\n\t\t\t\n\t\t\t<div class=\"cod-form__steps\">\n\t\t\t\t\t\t\t\t\t\t\t<section\n\t\t\tclass=\"cod-form__step\"\n\t\t\tdata-step-index=\"0\"\n\t\t\tdata-step-id=\"topic\"\n\t\t\tdata-step-last=\"0\"\n\t\t\thidden\t\t>\n\t\t\t\t\t\t\t<h3 class=\"cod-form__step-title\">What&#039;s your topic?<\/h3>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cod-form__field cod-form__field--topic_tiles\" data-field-name=\"topic\">\n\t\t\t\n\t\t\t<div id=\"cod-form-field-topic-group\" class=\"cod-tiles\" role=\"radiogroup\" aria-label=\"Topic\" data-cod-tiles-name=\"topic\"><button type=\"button\" class=\"cod-tile cod-tile--selected\" data-value=\"product\" aria-pressed=\"true\"><span class=\"cod-tile__label\">Product inquiry<\/span><span class=\"cod-tile__icon\" aria-hidden=\"true\"><i class=\"iconcod- icon-cod-gear\" aria-hidden=\"true\"><\/i><\/span><\/button><button type=\"button\" class=\"cod-tile\" data-value=\"cyber\" aria-pressed=\"false\"><span class=\"cod-tile__label\">Cyber Security<\/span><span class=\"cod-tile__icon\" aria-hidden=\"true\"><i class=\"iconcod- icon-cod-approved-signal_blue\" aria-hidden=\"true\"><\/i><\/span><\/button><button type=\"button\" class=\"cod-tile\" data-value=\"ai\" aria-pressed=\"false\"><span class=\"cod-tile__label\">AI \/ Artificial Intelligence<\/span><span class=\"cod-tile__icon\" aria-hidden=\"true\"><i class=\"iconcod- icon-cod-code\" aria-hidden=\"true\"><\/i><\/span><\/button><button type=\"button\" class=\"cod-tile\" data-value=\"embedded\" aria-pressed=\"false\"><span class=\"cod-tile__label\">Embedded<\/span><span class=\"cod-tile__icon\" aria-hidden=\"true\"><i class=\"iconcod- icon-cod-gear\" aria-hidden=\"true\"><\/i><\/span><\/button><button type=\"button\" class=\"cod-tile\" data-value=\"general\" aria-pressed=\"false\"><span class=\"cod-tile__label\">General inquiry<\/span><span class=\"cod-tile__icon\" aria-hidden=\"true\"><i class=\"iconcod- icon-cod-Contact\" aria-hidden=\"true\"><\/i><\/span><\/button><input type=\"hidden\" name=\"topic\" value=\"product\" data-cod-tiles-required=\"1\" \/><\/div>\n\t\t\t\t\t\t<div class=\"cod-form__field-error\" data-field-error=\"topic\" hidden><\/div>\n\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<section\n\t\t\tclass=\"cod-form__step cod-form__step--active\"\n\t\t\tdata-step-index=\"1\"\n\t\t\tdata-step-id=\"contact\"\n\t\t\tdata-step-last=\"1\"\n\t\t\t\t\t>\n\t\t\t\t\t\t\t<h3 class=\"cod-form__step-title\">Sign up now and get a free initial consultation<\/h3>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cod-form__field cod-form__field--text cod-form__field--floating\" data-field-name=\"name\">\n\t\t\t\n\t\t\t<input type=\"text\" id=\"cod-form-field-name\" name=\"name\" class=\"cod-form__input\" required maxlength=\"120\" placeholder=\" \" \/><label class=\"cod-form__floating-label\" for=\"cod-form-field-name\"><span class=\"cod-form__floating-label-text\">Name<\/span><span class=\"cod-form__required\" aria-hidden=\"true\">*<\/span><\/label>\n\t\t\t\t\t\t<div class=\"cod-form__field-error\" data-field-error=\"name\" hidden><\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"cod-form__field cod-form__field--email cod-form__field--floating\" data-field-name=\"email\">\n\t\t\t\n\t\t\t<input type=\"email\" id=\"cod-form-field-email\" name=\"email\" class=\"cod-form__input\" required placeholder=\" \" \/><label class=\"cod-form__floating-label\" for=\"cod-form-field-email\"><span class=\"cod-form__floating-label-text\">Email<\/span><span class=\"cod-form__required\" aria-hidden=\"true\">*<\/span><\/label>\n\t\t\t\t\t\t<div class=\"cod-form__field-error\" data-field-error=\"email\" hidden><\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"cod-form__field cod-form__field--tel cod-form__field--floating\" data-field-name=\"phone\">\n\t\t\t\n\t\t\t<input type=\"tel\" id=\"cod-form-field-phone\" name=\"phone\" class=\"cod-form__input\" required maxlength=\"30\" placeholder=\" \" \/><label class=\"cod-form__floating-label\" for=\"cod-form-field-phone\"><span class=\"cod-form__floating-label-text\">Phone<\/span><span class=\"cod-form__required\" aria-hidden=\"true\">*<\/span><\/label>\n\t\t\t\t\t\t\t<p class=\"cod-form__hint\" data-cod-hint=\"phone\">For any questions about your enquiry<\/p>\n\t\t\t\t\t\t<div class=\"cod-form__field-error\" data-field-error=\"phone\" hidden><\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"cod-form__field cod-form__field--textarea cod-form__field--floating\" data-field-name=\"message\">\n\t\t\t\n\t\t\t<textarea id=\"cod-form-field-message\" name=\"message\" class=\"cod-form__textarea\" rows=\"5\" maxlength=\"4000\" placeholder=\" \"><\/textarea><label class=\"cod-form__floating-label\" for=\"cod-form-field-message\"><span class=\"cod-form__floating-label-text\">Your message (optional)<\/span><\/label>\n\t\t\t\t\t\t<div class=\"cod-form__field-error\" data-field-error=\"message\" hidden><\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"cod-form__field cod-form__field--consent\" data-field-name=\"consent\">\n\t\t\t\n\t\t\t\t\t\t\t\t<label class=\"cod-form__checkbox-wrap\" for=\"cod-form-field-consent\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tid=\"cod-form-field-consent\"\n\t\t\t\t\t\t\tname=\"consent\"\n\t\t\t\t\t\t\tvalue=\"1\"\n\t\t\t\t\t\t\tclass=\"cod-form__checkbox\"\n\t\t\t\t\t\t\trequired\t\t\t\t\t\t\/>\n\t\t\t\t\t\t<span class=\"cod-form__checkbox-label\">\n\t\t\t\t\t\t\tI have read the <a href=\"https:\/\/www.codewerk.de\/en\/privacy\/\" target=\"_blank\" rel=\"noopener noreferrer\">Privacy Policy<\/a> and agree.\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"cod-form__required\" aria-hidden=\"true\">*<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/label>\n\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"cod-form__field-error\" data-field-error=\"consent\" hidden><\/div>\n\t\t<\/div>\n\t\t<input type=\"hidden\" name=\"aktion\" value=\"\" \/><input type=\"hidden\" name=\"herkunft_kanal\" value=\"\" \/><input type=\"hidden\" name=\"herkunft_zeit\" value=\"\" \/><input type=\"hidden\" name=\"herkunft_einstieg\" value=\"\" \/><input type=\"hidden\" name=\"herkunft_referrer\" value=\"\" \/><input type=\"hidden\" name=\"herkunft_gclid\" value=\"\" \/>\t\t<\/section>\n\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<div class=\"cod-form__turnstile cod-form__turnstile--invisible\" aria-hidden=\"true\">\n\t\t\t\t\t<div class=\"cf-turnstile\" data-sitekey=\"0x4AAAAAADK8yB8f8d1INhV-\" data-size=\"invisible\"><\/div>\n\t\t\t\t\t<input type=\"hidden\" name=\"cf_turnstile\" value=\"\" \/>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"cod-form__feedback\" role=\"status\" aria-live=\"polite\"><\/div>\n\n\t\t\t<div class=\"cod-form__actions\">\n\t\t\t\t\t\t\t\t<button type=\"submit\" class=\"cod-form__submit\" data-cod-action=\"submit\">\n\t\t\t\t\tRequest free consultation\t\t\t\t<\/button>\n\t\t\t<\/div>\n\n\t\t\t\t\t\t<p class=\"cod-form__after-submit\" data-cod-after-submit>\n\t\t\t\tWe will review your enquiry as soon as possible and call you back within one working day.\t\t\t<\/p>\n\t\t\t\t\t\t<ul class=\"cod-form__trust\" data-cod-trust>\n\t\t\t\t\t\t\t\t\t<li class=\"cod-form__trust-item\">\n\t\t\t\t\t\t<span class=\"cod-form__trust-check\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" width=\"1em\" height=\"1em\" focusable=\"false\"><path fill=\"currentColor\" d=\"M173.9 439.4l-166.4-166.4c-10-10-10-26.2 0-36.2l36.2-36.2c10-10 26.2-10 36.2 0L192 312.7 412.1 92.6c10-10 26.2-10 36.2 0l36.2 36.2c10 10 10 26.2 0 36.2l-274.4 274.4c-10 10-26.2 10-36.2 0z\"\/><\/svg>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"cod-form__trust-text\">ISO 9001 certified<\/span>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t<li class=\"cod-form__trust-item\">\n\t\t\t\t\t\t<span class=\"cod-form__trust-check\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" width=\"1em\" height=\"1em\" focusable=\"false\"><path fill=\"currentColor\" d=\"M173.9 439.4l-166.4-166.4c-10-10-10-26.2 0-36.2l36.2-36.2c10-10 26.2-10 36.2 0L192 312.7 412.1 92.6c10-10 26.2-10 36.2 0l36.2 36.2c10 10 10 26.2 0 36.2l-274.4 274.4c-10 10-26.2 10-36.2 0z\"\/><\/svg>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"cod-form__trust-text\">ISO 27001 certified<\/span>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t<li class=\"cod-form__trust-item\">\n\t\t\t\t\t\t<span class=\"cod-form__trust-check\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" width=\"1em\" height=\"1em\" focusable=\"false\"><path fill=\"currentColor\" d=\"M173.9 439.4l-166.4-166.4c-10-10-10-26.2 0-36.2l36.2-36.2c10-10 26.2-10 36.2 0L192 312.7 412.1 92.6c10-10 26.2-10 36.2 0l36.2 36.2c10 10 10 26.2 0 36.2l-274.4 274.4c-10 10-26.2 10-36.2 0z\"\/><\/svg>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"cod-form__trust-text\">Active in the TCN \u00b7 TCNOpen community<\/span>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t<\/form>\n\t\t\n    <\/div>\n<\/p><\/div>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>Testing as a Service TRDP conformance test to IEC 61375-2-8 &ndash; as a service For subsystem and device manufacturers, OEMs and integrators: the independent, reproducible proof that a device operates in conformance with the standard and interoperably within the train communication network &ndash; without building a test system of your own. Request a test How [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":17549,"menu_order":4,"comment_status":"closed","ping_status":"closed","template":"page-freiform.php","meta":{"_acf_changed":false,"_seopress_titles_title":"TRDP Conformance Test to IEC 61375-2-8 | Codewerk","_seopress_titles_desc":"Independent TRDP conformance test to IEC 61375-2-8 as a service: we test devices reproducibly for standard conformance and interoperability. Request a test.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"_cw_page_css":"\/* Landingpage TRDP-Konformitaetstest\n   Spec: docs\/specs\/2026-08-20-trdp-konformitaetstest-design.md\n   Aufbau mobile-first. Die Breakpoints entsprechen genau den vier Grenzen der Website:\n   min-width 768px ist die Komplementaergrenze zu max-width 767px, min-width 1025px zu 1024px.\n   Widescreen ab 2500px. *\/\n\n\/* ---------- Baender ---------- *\/\n\n.cw-band {\n  padding-top: var(--cw-space-8);\n  padding-bottom: var(--cw-space-8);\n}\n\n.cw-band--navy {\n  background: var(--cw-color-navy);\n  color: var(--cw-color-white);\n}\n\n.cw-band--soft { background: var(--cw-color-soft); }\n.cw-band--weiss { background: var(--cw-color-white); }\n\n.cw-band--navy h2,\n.cw-band--navy h3 { color: var(--cw-color-white); }\n\n.cw-band--soft h2,\n.cw-band--weiss h2,\n.cw-band--soft h3,\n.cw-band--weiss h3 { color: var(--cw-color-navy); }\n\n\/* Ziele der Hero-Anker. Ohne diesen Abstand verschwindet die Ueberschrift\n   beim Sprung unter dem Kopfbereich der Website. *\/\n#ablauf,\n#kontakt { scroll-margin-top: var(--cw-space-8); }\n\n\/* ---------- Inhaltsbreite ---------- *\/\n\n.cw-inner {\n  width: 100%;\n  max-width: var(--cw-container-max);\n  margin: 0 auto;\n  padding-left: var(--cw-container-pad);\n  padding-right: var(--cw-container-pad);\n  box-sizing: border-box;\n}\n\n\n\/* ---------- Ueberschriften und Vorzeile ---------- *\/\n\n\/* Gewicht mager, keine Versalien \u2014 an \/dpp-plattform\/ gemessen: h1 52px\/300, h2 35px\/300,\n   h3 21px\/700, alle ohne text-transform. Das Mockup aus dem Ticket setzt 800 und Versalien;\n   marke-und-design.md nennt DPP als maessgeblichen Stand, deshalb bleibt es hier mager. *\/\n.cw-band h2 {\n  font-size: var(--cw-fs-h2);\n  font-weight: var(--cw-font-weight-light);\n  line-height: var(--cw-lh-tight);\n  margin: 0;\n}\n\n\/* Der kurze Strich unter jeder Abschnittsueberschrift, aus dem Mockup uebernommen \u2014 dort als\n   Verlauf Blau nach Gruen. Das Blau #62A4DA ist die alte Elementor-Trennerfarbe, deshalb hier\n   nur Gruen. Als ::after, damit kein zusaetzliches Markup je Abschnitt n\u00f6tig ist. *\/\n.cw-band h2::after {\n  content: \"\";\n  display: block;\n  width: 64px;\n  height: 4px;\n  border-radius: var(--cw-radius-pill);\n  background: var(--cw-color-green);\n  margin: var(--cw-space-2) 0 var(--cw-space-5);\n}\n\n.cw-vorzeile {\n  margin: 0 0 var(--cw-space-2);\n  font-size: 13px;\n  font-weight: var(--cw-font-weight-medium);\n  letter-spacing: .1em;\n  text-transform: uppercase;\n  color: var(--cw-color-inactive);\n}\n\n\/* Das Signature-Gruen traegt Text nur auf Navy. Auf hellen Flaechen bleibt es Flaeche. *\/\n.cw-vorzeile--akzent { color: var(--cw-color-green); }\n\n.cw-lead {\n  margin: var(--cw-space-4) 0 0;\n  \/* Skaliert selbst mit, statt in zwei Media Queries nachgezogen zu werden. *\/\n  font-size: clamp(18px, 1.1vw, 22px);\n  line-height: var(--cw-lh-loose);\n}\n\n.cw-band--navy .cw-lead { color: var(--cw-color-white); }\n.cw-band--soft .cw-lead,\n.cw-band--weiss .cw-lead { color: var(--cw-color-copy); }\n\n\/* ---------- Hero ---------- *\/\n\n\/* Zweispaltig erst ab Desktop. Bei 768 bliebe fuer den Text neben einem 340px-Bild nur rund\n   340px uebrig \u2014 zu schmal fuer die Ueberschrift. Bis dahin einspaltig, Bild unter den Chips. *\/\n.cw-hero__raster {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: var(--cw-space-6);\n  align-items: center;\n}\n\n\/* Wurzelrelative Adresse, damit dieselbe Seite auf Staging und Live dasselbe Bild laedt.\n   Die Datei liegt in der Mediathek beider Umgebungen. Kein loading=\"lazy\" \u2014 das Bild steht\n   im ersten Bildschirm, und lazy verlangsamt dort messbar. *\/\n\/* Die Groesse steht auf `width`, nicht auf `max-width`. Grund: Theme und Vorschau bringen ein\n   `img { max-width: 100% }` mit hoeherer Spezifitaet mit, das eine `max-width` hier ueberstimmt\n   \u2014 auf Mobil war das Bild dadurch 350 statt 220 px breit. `max-width: 100%` bleibt zusaetzlich\n   stehen, damit es in einem schmaleren Container trotzdem schrumpft. *\/\n.cw-hero__bild {\n  width: 220px;\n  max-width: 100%;\n  height: auto;\n  justify-self: center;\n}\n\n.cw-hero__titel {\n  margin: 0;\n  font-size: var(--cw-fs-h1);\n  font-weight: var(--cw-font-weight-light);\n  line-height: var(--cw-lh-tight);\n  color: var(--cw-color-white);\n}\n\n.cw-hero__lead {\n  margin: var(--cw-space-5) 0 0;\n  max-width: 60ch;\n  font-size: clamp(18px, 1.4vw, 22px);\n  line-height: var(--cw-lh-loose);\n  color: var(--cw-color-white);\n}\n\n\/* ---------- Aktionen ---------- *\/\n\n.cw-aktionen {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: stretch;\n  gap: var(--cw-space-5);\n  margin-top: var(--cw-space-7);\n}\n\n\/* Beide Buttons schrumpfen auf Inhaltsbreite und stehen damit in einer Zeile. Die Regel bleibt\n   auch ohne Theme-Markup sinnvoll: sie verhindert, dass ein Button in der Zeile schrumpft. *\/\n.cw-aktionen > * {\n  flex: 0 0 auto;\n  width: auto;\n  max-width: 100%;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n\/* Am 20.08.2026 stand hier `.cw-aktion`, ein eigener Wrapper um den Formular-Button des Themes.\n   Der ist weg: im Hero liegt jetzt kein Shortcode mehr, sondern ein Sprunglink zum Formular am\n   Seitenende. Beide Kinder der Aktionszeile sind damit eigene Anker, und der blockbreite\n   Theme-Wrapper ist kein Thema mehr. *\/\n\n\/* Sekundaerer Button, Vorbild ist `.btn-ghost` aus dem Mockup \u2014 dort mit 30px Radius.\n   Hier eckig, wie am 20.08.2026 gewuenscht.\n\n   Innenabstand und Mindesthoehe sind absichtlich dieselben wie bei `.cw-knopf`. Auf Mobil\n   stapeln die beiden Buttons untereinander, und dann greift `align-items: stretch` nicht mehr\n   \u2014 nur gleiche Werte halten die Kanten auch dort gleich. 48px sind zugleich Trefferflaeche. *\/\n.cw-anker {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  \/* Ohne border-box zaehlt min-height nur den Inhalt, und Innenabstand plus Rahmen kommen\n     obendrauf \u2014 am 20.08.2026 war der Button dadurch 76 statt 54 px hoch. Die Umgebung setzt\n     border-box nicht garantiert, also steht es hier. Gilt fuer jede Regel mit fester\n     Kastenmasse in dieser Datei. *\/\n  box-sizing: border-box;\n  min-height: 48px;\n  padding: var(--cw-space-2) var(--cw-space-5);\n  border: 2px solid rgba(255, 255, 255, .35);\n  border-radius: 0;\n  background: transparent;\n  color: var(--cw-color-white);\n  font-weight: var(--cw-font-weight-bold);\n  text-decoration: none;\n  transition: border-color var(--cw-transition-default), color var(--cw-transition-default);\n}\n\n.cw-anker:hover,\n.cw-anker:focus-visible {\n  border-color: var(--cw-color-green);\n  color: var(--cw-color-green);\n}\n\n\/* Primaerer Button. Er ersetzt seit dem 20.08.2026 den Formular-Button im Hero: er oeffnet kein\n   zweites Formular als Popup, sondern springt zum eingebetteten Formular am Seitenende.\n   Gruen als Flaeche, Navy als Schrift \u2014 das erlaubte Verhaeltnis, denn #9EFC4F traegt selbst\n   keinen Text. Versalien und eckige Kanten wie beim Theme-Button, damit die Seite nicht zwei\n   verschiedene Primaerbuttons zeigt. *\/\n.cw-knopf {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  min-height: 48px;\n  padding: var(--cw-space-2) var(--cw-space-6);\n  border: 2px solid var(--cw-color-green);\n  border-radius: 0;\n  background: var(--cw-color-green);\n  color: var(--cw-color-navy);\n  font-weight: var(--cw-font-weight-bold);\n  letter-spacing: .06em;\n  text-transform: uppercase;\n  text-decoration: none;\n  transition: background var(--cw-transition-default), border-color var(--cw-transition-default);\n}\n\n.cw-knopf:hover,\n.cw-knopf:focus-visible {\n  background: var(--cw-color-green-deep);\n  border-color: var(--cw-color-green-deep);\n}\n\n\/* ---------- Trust-Chips im Hero ---------- *\/\n\n\/* Aus dem Mockup: die Nachweise stehen ueber der Falzlinie, nicht erst im Trust-Band weiter\n   unten. Bewusst frei gebaut und nicht [cw_pills] \u2014 wie der Shortcode auf Navy aussieht, ist\n   nicht dokumentiert, und genau deshalb liegt er sonst nur auf hellen Baendern. *\/\n.cw-chips {\n  list-style: none;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--cw-space-1);\n  margin: var(--cw-space-6) 0 0;\n  padding: 0;\n}\n\n\/* `white-space: nowrap` ist der Punkt: \u201eIEC 61375-2-8\" darf an seinen Bindestrichen nicht\n   umbrechen. Sonst wird dieses eine Chip zweizeilig und damit hoeher als ISO 9001 und die\n   uebrigen \u2014 genau die schiefe Umrandung, die am 20.08.2026 aufgefallen ist. *\/\n.cw-chip {\n  display: inline-flex;\n  align-items: center;\n  white-space: nowrap;\n  border: 1px solid rgba(255, 255, 255, .16);\n  border-radius: var(--cw-radius-pill);\n  padding: var(--cw-space-1) var(--cw-space-3);\n  font-size: 13px;\n  font-weight: var(--cw-font-weight-medium);\n  letter-spacing: .04em;\n  line-height: var(--cw-lh-normal);\n  color: var(--cw-color-grey-light);\n}\n\n\/* ---------- Callout ---------- *\/\n\n\/* Fasst den Problemaufriss in einem Satz zusammen. Gruen traegt hier keine Schrift, sondern\n   ist die Kante links \u2014 auf Hell darf es nur Flaeche sein. *\/\n.cw-callout {\n  margin-top: var(--cw-space-5);\n  border-left: 4px solid var(--cw-color-green);\n  border-radius: 0 var(--cw-radius-md) var(--cw-radius-md) 0;\n  background: var(--cw-color-soft);\n  padding: var(--cw-space-4) var(--cw-space-5);\n  font-size: var(--cw-fs-body-lg);\n  font-weight: var(--cw-font-weight-medium);\n  color: var(--cw-color-navy);\n}\n\n\/* ---------- Ablaufschritte, frei gebaut ---------- *\/\n\n\/* Ersetzt [cw_ablaufschritte]. Entscheidung vom 20.08.2026: die Nummerierung aus dem Mockup\n   ist gewollt, das Theme-Element zeigt stattdessen Haekchen. Preis ist ein Nachbau, der bei\n   einer kuenftigen Stilanpassung des Elements nicht mitzieht. *\/\n.cw-schritte {\n  list-style: none;\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: var(--cw-space-5);\n  margin: var(--cw-space-6) 0 0;\n  padding: 0;\n  counter-reset: cw-schritt;\n}\n\n.cw-schritt {\n  background: var(--cw-color-white);\n  border: 1px solid var(--cw-color-grey-light);\n  border-radius: var(--cw-radius-md);\n  padding: var(--cw-space-5);\n}\n\n\/* Das Mockup setzt die Ziffer als gruene Schrift auf Weiss. Das verbietet das Regelwerk \u2014\n   #9EFC4F traegt auf Hell keinen Text. Also Gruen als Flaeche, Ziffer in Navy: dasselbe\n   Verhaeltnis wie beim Primaerbutton. *\/\n.cw-schritt__nr {\n  counter-increment: cw-schritt;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 44px;\n  height: 44px;\n  margin-bottom: var(--cw-space-3);\n  border-radius: var(--cw-radius-pill);\n  background: var(--cw-color-green);\n  color: var(--cw-color-navy);\n  font-size: var(--cw-fs-h3);\n  font-weight: var(--cw-font-weight-bold);\n  line-height: 1;\n}\n\n.cw-schritt__nr::before { content: counter(cw-schritt); }\n\n.cw-schritt__titel {\n  margin: 0 0 var(--cw-space-2);\n  font-size: var(--cw-fs-h3);\n  font-weight: var(--cw-font-weight-bold);\n  line-height: var(--cw-lh-normal);\n}\n\n.cw-schritt p {\n  margin: 0;\n  color: var(--cw-color-copy);\n  line-height: var(--cw-lh-loose);\n}\n\n\/* ---------- Karten ---------- *\/\n\n.cw-karten {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: var(--cw-space-5);\n  margin-top: var(--cw-space-6);\n}\n\n\/* Die Haarlinie ist nicht Zierde. Auf dem weissen Band steht eine weisse Karte sonst\n   unsichtbar auf weissem Grund. DPP gibt jeder Karte diesen Rand: auf Weiss 1px #E7E7E7,\n   auf Soft 1px #E4E9EE \u2014 beide liegen auf --cw-color-grey-light (#E6EAED). Am 20.08.2026\n   an \/dpp-plattform\/ nachgemessen; die Kartentabelle der Stilanalyse hatte ihn ausgelassen. *\/\n.cw-karte {\n  background: var(--cw-color-white);\n  border: 1px solid var(--cw-color-grey-light);\n  border-radius: var(--cw-radius-md);\n  padding: var(--cw-space-5);\n}\n\n\/* Karten auf Navy: Flaeche statt Schatten, wie auf der DPP-Seite \u2014 dort mit\n   rgba(255,255,255,.04) und rgba(255,255,255,.1) als Rand, genau so uebernommen. *\/\n.cw-band--navy .cw-karte {\n  background: rgba(255, 255, 255, .04);\n  border-color: rgba(255, 255, 255, .1);\n}\n\n.cw-karte__titel {\n  margin: 0 0 var(--cw-space-2);\n  font-size: var(--cw-fs-h3);\n  font-weight: var(--cw-font-weight-bold);\n  line-height: var(--cw-lh-normal);\n}\n\n.cw-karte p {\n  margin: 0;\n  color: var(--cw-color-copy);\n  line-height: var(--cw-lh-loose);\n}\n\n\/* ---------- Punkteliste (Warum Testen mit Codewerk) ---------- *\/\n\n.cw-punkte {\n  list-style: none;\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: var(--cw-space-6);\n  margin: var(--cw-space-6) 0 0;\n  padding: 0;\n}\n\n\/* Haekchen statt gruenem Balken, wie im Mockup (`.why .c`). Am 20.08.2026 gewuenscht. *\/\n.cw-punkte li {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--cw-space-3);\n}\n\n\/* Das Mockup zeichnet das Haekchen als Inline-SVG. Das geht hier nicht: WordPress filtert\n   svg-Elemente aus dem Seiteninhalt (auch aus diesem Kommentar, wenn man sie in spitze\n   Klammern setzt). Also aus CSS gezeichnet \u2014 zwei Kanten, um 45 Grad gedreht.\n   Die Flaeche ist das Gruen mit Alpha, wie auf DPP, wo gruene Flaechen stark transparent\n   liegen. Der Haken traegt keine Information: die Liste sagt dasselbe in Worten, deshalb im\n   Markup `aria-hidden`. *\/\n.cw-haken {\n  flex: 0 0 auto;\n  position: relative;\n  width: 24px;\n  height: 24px;\n  margin-top: 2px;\n  border-radius: var(--cw-radius-pill);\n  background: rgba(158, 252, 79, .15);\n}\n\n.cw-haken::before {\n  content: \"\";\n  position: absolute;\n  top: 7px;\n  left: 8px;\n  width: 6px;\n  height: 10px;\n  border-right: 2px solid var(--cw-color-green);\n  border-bottom: 2px solid var(--cw-color-green);\n  transform: rotate(45deg);\n}\n\n.cw-punkte p {\n  margin: 0;\n  line-height: var(--cw-lh-loose);\n}\n\n\/* ---------- Trustbar ---------- *\/\n\n\/* Aus dem Mockup (`.trustbar`) statt [cw_pills]: ganze Aussagen in Kaesten, keine Schlagworte.\n   Am 20.08.2026 so gewuenscht. Damit liegt auf dieser Seite nur noch ein Theme-Element,\n   das Akkordeon \u2014 wer spaeter vereinheitlicht, faengt hier an. *\/\n.cw-trustbar {\n  list-style: none;\n  display: flex;\n  flex-wrap: wrap;\n  \/* Ausdruecklich, nicht auf den Vorgabewert verlassen: eine Theme-Regel auf der Liste kann\n     ihn ueberschreiben, und dann werden die Kaesten unterschiedlich hoch. *\/\n  align-items: stretch;\n  gap: var(--cw-space-2);\n  margin: var(--cw-space-6) 0 0;\n  padding: 0;\n}\n\n\/* Am 20.08.2026 war \u201eISO 9001 zertifiziert\" hoeher als \u201eISO 27001 zertifiziert\". Deshalb hier\n   drei Dinge zusammen, die die Hoehe unabhaengig vom Theme festnageln: eigene Zeilenhoehe,\n   eine Mindesthoehe als gemeinsames Mass, und weg mit den Aussenabstaenden, die WordPress\n   Listeneintraegen im Inhalt sonst mitgibt. Der Text wird darin senkrecht zentriert. *\/\n.cw-trustbar li {\n  display: flex;\n  align-items: center;\n  box-sizing: border-box;\n  min-height: 48px;\n  margin: 0;\n  background: var(--cw-color-white);\n  border: 1px solid var(--cw-color-grey-light);\n  border-radius: var(--cw-radius-md);\n  padding: var(--cw-space-2) var(--cw-space-4);\n  font-weight: var(--cw-font-weight-bold);\n  line-height: var(--cw-lh-normal);\n  color: var(--cw-color-navy);\n}\n\n\/* ---------- Kontaktband ---------- *\/\n\n\/* Notiz und Download aus dem Mockup (`.cta .note`). Im Mockup zeigte der Link dort auf `#` \u2014\n   die Datei liegt inzwischen in der Mediathek beider Umgebungen, also ist es ein echter Link. *\/\n.cw-notiz {\n  margin: var(--cw-space-6) 0 0;\n  border-left: 3px solid var(--cw-color-green);\n  border-radius: 0 var(--cw-radius-md) var(--cw-radius-md) 0;\n  background: rgba(255, 255, 255, .04);\n  padding: var(--cw-space-4) var(--cw-space-5);\n  color: var(--cw-color-grey-light);\n  line-height: var(--cw-lh-loose);\n}\n\n\/* Der Download ist ein Link im Fliesstext der Notiz, kein Button \u2014 so wie im Mockup\n   (`.cta .note a`). Am 20.08.2026 ausdruecklich so gewuenscht. Gruen als Schriftfarbe ist hier\n   erlaubt, weil die Notiz auf Navy liegt; auf hellem Grund waere es verboten. Unterstrichen,\n   damit er im Fliesstext ueberhaupt als Link erkennbar ist \u2014 Farbe allein traegt das nicht.\n   Die Dateigroesse steht im Satz statt im Linktext: im Mobilnetz will niemand blind 95 KB\n   ziehen, aber der Linktext soll benennen, was kommt, nicht wie schwer es ist. *\/\n.cw-notiz a {\n  color: var(--cw-color-green);\n  font-weight: var(--cw-font-weight-bold);\n  text-decoration: underline;\n  text-underline-offset: 3px;\n}\n\n.cw-notiz a:hover,\n.cw-notiz a:focus-visible { text-decoration: none; }\n\n.cw-kontakt__raster {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: var(--cw-space-7);\n  align-items: start;\n}\n\n\/* Das Formular kommt aus dem Plugin und ist auf dunklem Grund ungepruft. Die weisse Karte\n   darunter nimmt ihm den Untergrund weg \u2014 dasselbe Mittel wie im Mockup, wo das Formular\n   ebenfalls als weisse Karte auf Navy sitzt. *\/\n.cw-formular {\n  background: var(--cw-color-white);\n  border-radius: var(--cw-radius-md);\n  padding: var(--cw-space-6);\n}\n\n\/* Schutzgel\u00e4nder, damit kein Eingabefeld aus der Karte laeuft. Absichtlich auf den\n   Element-Selektoren, nicht auf den Plugin-Klassen: greift auch, wenn das Plugin sein Markup\n   umbenennt. box-sizing verhindert, dass eine Breite von 100% plus Innenabstand ueber den\n   Rand hinausschiesst. *\/\n.cw-formular input,\n.cw-formular select,\n.cw-formular textarea {\n  max-width: 100%;\n  box-sizing: border-box;\n}\n\n\/* Felder wie im Popup-Formular, uebertragen in Weiss und Grau. Am 20.08.2026 nach Ansicht\n   eines Screenshots des Popups so gewuenscht.\n\n   Die Gestaltung des Popups besteht aus drei Dingen: gefuelltes Feld, **nur** eine Oberkante von\n   3px, keine Seiten- und Unterkante, eckig. Auf Navy heisst das: Fuellung 6-Prozent-Weiss, Linie\n   hell. Hier ist der Untergrund eine weisse Karte, also kippt beides um \u2014 Fuellung ein Grau\n   ueber Weiss, Linie ein dunkleres Grau darueber.\n\n   | | Popup (Navy) | hier (weisse Karte) |\n   |---|---|---|\n   | Fuellung | rgba(255,255,255,.06) | --cw-color-soft #F2F2F2 |\n   | Oberkante | hell, 3px | --cw-color-inactive #9AAAB8, 3px |\n   | Seiten\/unten | keine | keine |\n\n   #9AAAB8 ist kein neuer Wert, sondern das Token der Vorzeilen \u2014 das mittlere Grau des Hauses.\n   Es traegt die Linie ohne dem Gruen Konkurrenz zu machen.\n\n   Warum die Kanten hier ausdruecklich stehen und nicht dem Elementor-Kit ueberlassen bleiben:\n   Das Kit gibt `input` und `textarea` site-weit `border-width: 3px 0 0 0` \u2014 die Form stammt also\n   von dort. Es trifft aber `select` nicht, und seine beiden Selektoren sind unterschiedlich\n   stark. Genau daran sieht man im Popup, dass dessen Uneinheitlichkeit ein Versehen ist:\n\n   - `.elementor-kit-7 input:not(...)` = 0-3-1 schlaegt die Plugin-Regel 0-2-0 \u2192 Oberkante blau\n   - `.elementor-kit-7 textarea` = 0-1-1 verliert gegen 0-2-0 \u2192 Oberkante grau\n\n   Deshalb ist im Popup die Linie ueber den Textfeldern blau, die ueber dem Nachrichtenfeld grau.\n   Gewollt war offensichtlich beides grau. Hier stehen alle drei Feldtypen gleich.\n\n   `background-color` und nicht `background`: das Select traegt seinen Pfeil als `background-image`,\n   die Kurzform wuerde ihn loeschen. Klassennamen aus `plugins\/cod-forms\/assets\/css\/frontend.css`\n   gelesen, nicht geraten.\n\n   Innenabstaende bleiben unangetastet \u2014 sie kommen aus Kit und Plugin und sind im Popup dieselben.\n   Wer sie hier anfasst, entfernt sich von der Vorlage.\n\n   Der Fokus faerbt nur die Oberkante, ueber das Fokus-Token des Plugins (#022B4D). Navy statt\n   des Popup-Gruens, weil auf Weiss und Grau ein dunkler Ton den Fokus deutlicher zeigt. Der\n   Fokus-Schein des Plugins bleibt unangetastet, weil hier kein box-shadow gesetzt wird. Die\n   Regel muss sein: `border-color` oben wuerde die Fokusfarbe sonst mit ueberschreiben. *\/\n.cw-formular .cod-form__input,\n.cw-formular .cod-form__textarea,\n.cw-formular .cod-form__select {\n  background-color: var(--cw-color-soft);\n  border-style: solid;\n  border-width: 3px 0 0 0;\n  border-color: var(--cw-color-inactive);\n  border-radius: 0;\n}\n\n.cw-formular .cod-form__input:focus,\n.cw-formular .cod-form__textarea:focus,\n.cw-formular .cod-form__select:focus {\n  border-top-color: var(--cod-color-focus);\n}\n\n\/* Am 20.08.2026 stand hier eine spitze Klammer als Motiv in der freien Navy-Flaeche\n   (gedrehtes Quadrat mit zwei gruenen Kanten, 200px, Deckkraft .12, links unten\n   angeschnitten, ab 1025px). Auf Wunsch erst einmal wieder entfernt. Kommt sie zurueck,\n   braucht das Band `position: relative` und `overflow: hidden`, und `.cw-abschluss .cw-inner`\n   eine eigene Ebene mit `z-index: 1` \u2014 sonst liegt das Motiv ueber dem Text oder erzeugt\n   seitliches Scrollen. *\/\n\n\/* ---------- Tablet: 768 bis 1024 ---------- *\/\n\n@media (min-width: 768px) {\n  .cw-karten--3 { grid-template-columns: repeat(2, 1fr); }\n  .cw-schritte { grid-template-columns: repeat(2, 1fr); }\n\n  \/* Die Punkteliste bleibt auch auf Desktop zweispaltig. Fuenf Eintraege mit Beschreibung\n     lesen sich in zwei breiten Spalten besser als in drei schmalen. Absicht, kein Versehen. *\/\n  .cw-punkte { grid-template-columns: repeat(2, 1fr); }\n}\n\n\/* ---------- Desktop: ab 1025 ---------- *\/\n\n@media (min-width: 1025px) {\n  .cw-band {\n    padding-top: calc(var(--cw-space-8) * 1.5);\n    padding-bottom: calc(var(--cw-space-8) * 1.5);\n  }\n\n  .cw-karten--3 { grid-template-columns: repeat(3, 1fr); }\n\n  \/* Vier Schritte in vier Spalten \u2014 die Reihenfolge ist die Aussage, sie soll in einer\n     Zeile lesbar sein. *\/\n  .cw-schritte { grid-template-columns: repeat(4, 1fr); }\n\n  \/* minmax(0, 1fr) statt 1fr: sonst kann die Textspalte durch eine lange Zeile\n     ueber ihre Spaltenbreite hinauswachsen. *\/\n  .cw-hero__raster {\n    grid-template-columns: minmax(0, 1fr) 340px;\n    gap: var(--cw-space-8);\n  }\n\n  .cw-hero__bild {\n    width: 340px;\n    justify-self: end;\n  }\n\n  \/* Text links, Formular rechts, halbe und halbe Breite \u2014 wie `.cta-grid` im Mockup. Vorher\n     war die Formularspalte auf 420px begrenzt; am 20.08.2026 gewuenscht: breiter nach links. *\/\n  .cw-kontakt__raster {\n    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n    gap: var(--cw-space-8);\n  }\n}\n\n\/* ---------- Widescreen: ab 2500 ---------- *\/\n\n@media (min-width: 2500px) {\n  \/* Der Container begrenzt die Breite bereits, und .cw-lead skaliert ueber clamp().\n     Hier waechst nur der Fliesstext in den Karten mit, damit er nicht winzig wirkt. *\/\n  .cw-karte p,\n  .cw-schritt p,\n  .cw-punkte p { font-size: var(--cw-fs-body-lg); }\n\n  \/* Das Bild darf auf 4K etwas mitwachsen, sonst wirkt es neben der 48px-Ueberschrift\n     verloren. Die Datei ist 370px breit \u2014 mehr als das waere Hochskalieren. *\/\n  .cw-hero__raster { grid-template-columns: minmax(0, 1fr) 370px; }\n  .cw-hero__bild { width: 370px; }\n}\n\n\/* ---------- Weitere Produkte ----------\n   Einzige Ergaenzung gegenueber dem CSS der TRDP-Seite. Grund: die SIBAS-PN-Seite hat am Ende\n   drei Produkt-Teaser, die es auf der TRDP-Seite nicht gibt \u2014 im Bestand als\n   Elementor-Widget \"Produkt-Teaser\". Aufgebaut wie .cw-karte, nur mit Bild oben:\n   gleiche Haarlinie, gleicher Radius, gleicher Innenabstand. Das Bild bekommt eine feste\n   Hoehe und object-fit: contain, damit die drei unterschiedlich hohen Produktdarstellungen\n   (666 \/ 629 \/ 629 px) auf einer Linie stehen und nichts verzerrt. *\/\n.cw-produkte {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: var(--cw-space-5);\n  margin-top: var(--cw-space-6);\n}\n\n.cw-produkt {\n  display: flex;\n  flex-direction: column;\n  background: var(--cw-color-white);\n  border: 1px solid var(--cw-color-grey-light);\n  border-radius: var(--cw-radius-md);\n  padding: var(--cw-space-5);\n}\n\n\/* width statt max-width, aus demselben Grund wie beim Hero-Bild: das Theme bringt ein\n   img { max-width: 100% } mit hoeherer Spezifitaet mit. *\/\n.cw-produkt img {\n  width: 100%;\n  height: 200px;\n  object-fit: contain;\n  margin-bottom: var(--cw-space-4);\n}\n\n.cw-produkt__titel {\n  margin: 0 0 var(--cw-space-2);\n  font-size: var(--cw-fs-h3);\n  font-weight: var(--cw-font-weight-bold);\n  line-height: var(--cw-lh-normal);\n}\n\n.cw-produkt p {\n  margin: 0 0 var(--cw-space-4);\n  color: var(--cw-color-copy);\n  line-height: var(--cw-lh-loose);\n}\n\n\/* margin-top: auto haelt die Links der drei Karten auf einer Linie, auch wenn die\n   Beschreibungen unterschiedlich lang sind. *\/\n.cw-produkt__link {\n  margin-top: auto;\n  align-self: flex-start;\n  color: var(--cw-color-navy);\n  font-weight: var(--cw-font-weight-bold);\n  text-decoration: underline;\n  text-underline-offset: 3px;\n}\n\n.cw-produkt__link:hover,\n.cw-produkt__link:focus-visible { text-decoration: none; }\n\n@media (min-width: 768px) {\n  .cw-produkte { grid-template-columns: repeat(3, 1fr); }\n}\n\n\/* Muster-Hintergrund fuer den Pruefumfang-Abschnitt.\n\n   Die Hausgrafik als Vektor: eine spitze Klammer aus zwei Schenkeln GLEICHER Staerke (572,4)\n   mit runden Enden, die im SELBEN Punkt zusammenlaufen. Wo sich die Schenkel ueberlappen,\n   wird die Flaeche heller; DIESE UEBERLAPPUNG IST DER TROPFEN. Kein Kreis, kein Gradient.\n\n   Der Tropfen ist am rechten Bildrand ANGESCHNITTEN \u2014 514 von 690,7 px sichtbar, also rund\n   ein Viertel (25,5 %) abgeschnitten. Das ist keine gewaehlte Zahl, sondern exakt die\n   Komposition der Vorlage Hintergrund_Hell@2x.png: gegen sie gemessen betraegt die mittlere\n   Farbabweichung 0,0048 von 255, die hoechste 7.\n\n   Geometrie aus dem PNG rekonstruiert, 99,96 % Klassenuebereinstimmung. Als SVG 1,2 KB statt\n   11 KB und ohne Neuberechnung zuschneidbar. Herleitung und Rohform mit voller\n   Schenkellaenge: Outputs\/2026-08-24 Codewerk Klammer Rohform.\n\n   Pfad wurzelrelativ, damit die Regel auf Staging und Live gleich greift.\n   Mediathek: Anhang 21301 (Live), 1.252 B. *\/\n.cw-band--muster {\n  background-color: #f0f2f8;\n  background-image: url(\"\/wp-content\/uploads\/2026\/08\/codewerk-klammer-hell-viertel.svg\");\n  background-position: center right;\n  background-repeat: no-repeat;\n  background-size: cover;\n}\n\n\/* ---------- Tropfen randscharf ab Desktop ----------\n   Am 29.08.2026 gewuenscht: der Tropfen soll oben und unten genau an seiner Rundung\n   abgeschnitten werden statt frei im Band zu stehen \u2014 \u201enicht zu viel und nicht zu wenig\".\n\n   Der Tropfenruecken ist ein Halbkreis um den Scheitel (2450,5 \/ 700,9) mit r = 286,2; die\n   Leinwand (2560 x 1419) schneidet ihn rechts bei x = 2560 ab. Genau dort, wo der rechte\n   Anschnitt den Kreis kreuzt, liegt der gesuchte Schnitt:\n\n     dy = sqrt(286,2\u00b2 - 109,5\u00b2) = 264,4  ->  y 436,5 bis 965,3, Hoehe 528,8\n     Bildhoehe : Tropfenhoehe = 1419 \/ 528,8 = 2,6832  ->  background-size: auto 268.32%\n     Position  : 436,5 \/ 528,8 = 0,8255, P loest 0,8255 - (2,6832 - 1) * P = 0  ->  49%\n\n   Damit treffen sich Ober-, Unter- und rechter Schnitt in den beiden Ecken; die tangentiale\n   Fassung (248.08%) liess oben und unten einen flachen Streifen stehen und wurde am\n   29.08.2026 ersetzt. Volle Herleitung und Messreihe im CSS von 16632.\n\n   Der Wert ist von der Bandhoehe unabhaengig \u2014 er bezieht sich allein auf die Bildgeometrie.\n   Dieses Band ist mit sechs Karten in drei Spalten hoeher als das der SOFTSIBAS-Seiten\n   (736 statt 581 px bei 1425 breit gemessen); der Tropfen nimmt dadurch 46 statt 37 % der\n   Bandbreite ein, sitzt aber genauso randscharf.\n\n   Nur ab 1025px: erst dort ist das Band flach. Darunter ist es hoch und schmal, und der\n   Tropfen \u2014 0,9 mal so breit wie hoch \u2014 wuerde es ausfuellen; dort schneidet `cover` ohnehin\n   senkrecht nicht an. *\/\n@media (min-width: 1025px) {\n  .cw-band--muster {\n    background-size: auto 268.32%;\n    background-position: right 49%;\n  }\n}","footnotes":"","_cw_change_note":""},"class_list":["post-17567","page","type-page","status-publish","hentry"],"acf":[],"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/www.codewerk.de\/en\/wp-json\/wp\/v2\/pages\/17567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codewerk.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.codewerk.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.codewerk.de\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codewerk.de\/en\/wp-json\/wp\/v2\/comments?post=17567"}],"version-history":[{"count":0,"href":"https:\/\/www.codewerk.de\/en\/wp-json\/wp\/v2\/pages\/17567\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.codewerk.de\/en\/wp-json\/wp\/v2\/pages\/17549"}],"wp:attachment":[{"href":"https:\/\/www.codewerk.de\/en\/wp-json\/wp\/v2\/media?parent=17567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}