{"id":17551,"date":"2025-02-24T15:30:27","date_gmt":"2025-02-24T14:30:27","guid":{"rendered":"https:\/\/www.codewerk.de\/portfolio\/software-products-and-solutions\/softsibas-pn-stack\/"},"modified":"2026-08-29T13:27:54","modified_gmt":"2026-08-29T11:27:54","slug":"softsibas-pn-stack","status":"publish","type":"page","link":"https:\/\/www.codewerk.de\/en\/portfolio\/software-products-and-solutions\/softsibas-pn-stack\/","title":{"rendered":"SOFTSIBAS PN Stack"},"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\">SOFTSIBAS PN Stack<\/p>\n<h1 class=\"cw-hero__titel\">A PROFINET stack replaces the interface card<\/h1>\n<p class=\"cw-hero__lead\">With the SOFTSIBAS PN Stack we replace your PC104 card and minimize<br \/>\n        your integration and maintenance costs.<\/p>\n<div class=\"cw-aktionen\">\n        <a class=\"cw-knopf\" href=\"#kontakt\" data-cw-track=\"pnstack-anker-kontakt\">Make an enquiry<\/a><br \/>\n        <a class=\"cw-anker\" href=\"#integration\" data-cw-track=\"pnstack-anker-integration\">How the stack integrates<\/a>\n      <\/div>\n<ul class=\"cw-chips\">\n<li class=\"cw-chip\">SIBAS PN<\/li>\n<li class=\"cw-chip\">PROFINET<\/li>\n<li class=\"cw-chip\">IEC 62443-4-2<\/li>\n<li class=\"cw-chip\">ISO 9001<\/li>\n<li class=\"cw-chip\">ISO 27001<\/li>\n<\/ul><\/div>\n<p>    <img decoding=\"async\" class=\"cw-hero__bild cw-hero__bild--karte\" src=\"\/wp-content\/uploads\/2025\/02\/softsibas-pn-stack-big.png\" width=\"577\" height=\"1003\" alt=\"\" data-no-lazy=\"1\">\n  <\/div>\n<\/section>\n<section class=\"cw-band cw-band--weiss\">\n<div class=\"cw-inner cw-gegenueber\">\n<div>\n<p class=\"cw-vorzeile\">The situation<\/p>\n<h2>Why the interface card becomes a cost factor<\/h2>\n<p class=\"cw-lead\">Until now, your subsystem needed a PC104 interface card in order to<br \/>\n        communicate with the control system (SIBAS PN) of the rail vehicle.<\/p>\n<p class=\"cw-callout\">With our software-based solution SOFTSIBAS PN Stack, you can do without<br \/>\n        integrating this additional hardware. Besides saving material costs for spare parts, you<br \/>\n        benefit from a high level of adaptability to new technical requirements.<\/p>\n<p>With our &ldquo;Security by Design&rdquo; approach (IEC 62443 4-2) we ensure that our<br \/>\n        software is built for maximum security and meets the requirements of the Cyber Resilience<br \/>\n        Act (CRA).<\/p>\n<\/p><\/div>\n<p>    <img decoding=\"async\" class=\"cw-motiv\" src=\"&#x2f;w&#x70;&#45;&#x63;&#111;n&#x74;e&#x6e;&#116;&#x2f;&#117;p&#x6c;&#111;&#x61;&#100;s&#x2f;2&#x30;&#50;&#x35;&#47;0&#x32;\/&#x48;&#97;&#x72;&#x64;w&#x61;&#114;&#x65;&#95;K&#x61;r&#x74;&#101;&#x40;&#50;x&#x2e;&#112;&#x6e;&#103;\" width=\"1070\" height=\"902\" alt=\"Isometric illustration of a PC104 interface card, crossed out \u2013 the card is no longer needed.\" loading=\"lazy\" data-no-lazy=\"1\">\n  <\/div>\n<\/section>\n<section class=\"cw-band cw-band--muster\" id=\"vorteile\">\n<div class=\"cw-inner\">\n<p class=\"cw-vorzeile\">Software replaces hardware<\/p>\n<h2>Your benefits<\/h2>\n<div class=\"cw-karten cw-karten--4\">\n<article class=\"cw-karte cw-karte--icon\">\n        <img decoding=\"async\" class=\"cw-karte__icon\" src=\"\/wp-content\/uploads\/2026\/08\/sibaspn-icon-comdec-tests.svg\" width=\"250\" height=\"205\" alt=\"\" loading=\"lazy\"><\/p>\n<h3 class=\"cw-karte__titel\">Savings on hardware costs<\/h3>\n<\/article>\n<article class=\"cw-karte cw-karte--icon\">\n        <img decoding=\"async\" class=\"cw-karte__icon\" src=\"\/wp-content\/uploads\/2026\/08\/sibaspn-icon-profinet-kommunikation.svg\" width=\"250\" height=\"205\" alt=\"\" loading=\"lazy\"><\/p>\n<h3 class=\"cw-karte__titel\">No further costs for spare parts<\/h3>\n<\/article>\n<article class=\"cw-karte cw-karte--icon\">\n        <img decoding=\"async\" class=\"cw-karte__icon\" src=\"\/wp-content\/uploads\/2026\/08\/sibaspn-icon-dienste-konformitaet.svg\" width=\"250\" height=\"205\" alt=\"\" loading=\"lazy\"><\/p>\n<h3 class=\"cw-karte__titel\">Reduced external dependencies (component obsolescence)<\/h3>\n<\/article>\n<article class=\"cw-karte cw-karte--icon\">\n        <img decoding=\"async\" class=\"cw-karte__icon\" src=\"\/wp-content\/uploads\/2026\/08\/sibaspn-icon-spm-projektierung.svg\" width=\"250\" height=\"205\" alt=\"\" loading=\"lazy\"><\/p>\n<h3 class=\"cw-karte__titel\">High flexibility through update capability<\/h3>\n<\/article><\/div>\n<\/p><\/div>\n<\/section>\n<section class=\"cw-band cw-band--weiss\" id=\"integration\">\n<div class=\"cw-inner\">\n<p class=\"cw-vorzeile\">Integration<\/p>\n<h2>Integration into your subsystem: a library for controllers with a real-time operating system<\/h2>\n<p>    <img decoding=\"async\" class=\"cw-schaubild\" src=\"\/&#119;&#112;&#45;&#x63;&#x6f;&#x6e;te&#110;&#116;&#x2f;&#x75;&#x70;&#x6c;oa&#100;&#115;&#x2f;&#x32;&#x30;&#x32;5&#47;&#48;&#50;&#x2f;&#x49;&#x6e;fo&#103;&#114;&#97;&#x66;&#x69;&#x6b;_S&#111;&#102;&#x74;&#x73;&#x69;&#x62;as&#95;&#80;&#x4e;&#x40;&#x32;x&#46;&#112;&#110;&#103;\" width=\"2560\" height=\"1490\" alt=\"Structure of the integration: the stack runs as a shared object library with an unprivileged process (web server and SIBAS PN services) and a privileged process (PN driver, managers, host API). The host application of the subsystem supplier connects through the host API with its C\/C++ interface. Below sits the real-time operating system with the ETH driver.\" loading=\"lazy\" data-no-lazy=\"1\"><\/p>\n<ul class=\"cw-punkte\">\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p>SOFTSIBAS PN Stack as a <strong>dynamically linked library<\/strong>.<\/p>\n<\/p><\/div>\n<\/li>\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p>Straightforward integration by <strong>reusing the Siemens Mobility API<\/strong> (host API).<\/p>\n<\/p><\/div>\n<\/li>\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p><strong>Secure by design<\/strong> approach (IEC 62443 4-2).<\/p>\n<\/p><\/div>\n<\/li>\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p>Support for <strong>single-port and dual-port Ethernet systems<\/strong>.<\/p>\n<\/p><\/div>\n<\/li>\n<\/ul><\/div>\n<\/section>\n<section class=\"cw-band cw-band--navy\">\n<div class=\"cw-inner\">\n<p class=\"cw-vorzeile cw-vorzeile--akzent\">Tailor-made integration and validation solutions<\/p>\n<h2>The Codewerk factor<\/h2>\n<p class=\"cw-lead\">Would you like to use SOFTSIBAS PN on your subsystem or are you planning for<br \/>\n      the next generation of your subsystem? In the system check we clarify with you<\/p>\n<ul class=\"cw-punkte\">\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p>which <strong>network switch<\/strong> is used.<\/p>\n<\/p><\/div>\n<\/li>\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p>how <strong>powerful your hardware<\/strong> is.<\/p>\n<\/p><\/div>\n<\/li>\n<li>\n        <span class=\"cw-haken\" aria-hidden=\"true\"><\/span><\/p>\n<div>\n<p>which <strong>operating system<\/strong> is in use.<\/p>\n<\/p><\/div>\n<\/li>\n<\/ul>\n<div class=\"cw-aktionen\">\n      <a class=\"cw-knopf\" href=\"#kontakt\" data-cw-track=\"pnstack-anker-beratung\">Request a consultation<\/a>\n    <\/div>\n<\/p><\/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 stack is for<\/h2>\n<p class=\"cw-lead\">For system and vehicle manufacturers who connect a subsystem to the control<br \/>\n      system of a rail vehicle &ndash; whether replacing an existing PC104 card or planning the next<br \/>\n      subsystem generation.<\/p>\n<\/p><\/div>\n<\/section>\n<section class=\"cw-band cw-band--weiss\">\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 PROFINET community<\/li>\n<li>Member of the PROFINET user organisation<\/li>\n<li>Partner in the Siemens Xcelerator ecosystem<\/li>\n<\/ul><\/div>\n<\/section>\n<section class=\"cw-band cw-band--soft\">\n<div class=\"cw-inner\">\n<p class=\"cw-vorzeile\">More SOFTSIBAS products<\/p>\n<h2>Related offerings<\/h2>\n<div class=\"cw-produkte\">\n<article class=\"cw-produkt\">\n        <img decoding=\"async\" src=\"\/wp-co&#110;&#116;&#101;&#110;&#116;&#47;&#117;&#x70;&#x6c;&#x6f;&#x61;&#x64;&#x73;&#x2f;&#x32;&#x30;&#x32;&#x35;&#x2f;02\/250&#50;&#48;&#53;&#95;&#67;&#111;&#100;&#x65;&#x77;&#x65;&#x72;&#x6b;&#x5f;&#x50;&#x72;&#x6f;&#x64;&#x75;&#x6b;tdarst&#101;&#108;&#108;&#117;&#110;&#103;&#95;&#x53;&#x6f;&#x66;&#x74;&#x73;&#x69;&#x62;&#x61;&#x73;&#x5f;&#x50;&#x4e;_Valid&#105;&#101;&#114;&#117;&#110;&#103;&#115;&#x74;&#x65;&#x73;&#x74;&#x40;&#x32;&#x78;&#x2d;&#x31;&#x2e;&#x70;&#x6e;g\" width=\"500\" height=\"900\" alt=\"\" loading=\"lazy\" data-no-lazy=\"1\"><\/p>\n<h3 class=\"cw-produkt__titel\">SIBAS PN validation test<\/h3>\n<p>Proven conformity with SIBAS PN through tests of 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=\"pnstack-produkt-pn-validierungstest\">View product<\/a><br \/>\n      <\/article>\n<article class=\"cw-produkt\">\n        <img decoding=\"async\" src=\"&#47;&#x77;&#112;&#x2d;&#99;&#x6f;&#110;&#x74;&#101;&#x6e;&#116;&#x2f;&#117;&#x70;&#108;&#x6f;&#97;&#x64;&#115;&#x2f;&#50;&#x30;&#50;&#x35;&#47;&#x30;2&#x2f;2&#x35;0&#x32;0&#x35;_&#x43;o&#x64;e&#x77;e&#x72;k&#x5f;P&#114;o&#100;u&#107;&#x74;&#100;&#x61;&#114;&#x73;&#116;&#x65;&#108;&#x6c;&#117;&#x6e;&#103;&#x5f;&#83;&#x6f;&#102;&#x74;&#115;&#x69;&#98;&#x61;&#115;&#x5f;&#84;&#x52;D&#x50;_&#x56;a&#x6c;i&#x64;i&#x65;r&#x75;n&#x67;s&#x74;e&#x73;t&#64;2&#120;&#46;&#112;&#x6e;&#103;\" width=\"370\" height=\"666\" alt=\"\" loading=\"lazy\" data-no-lazy=\"1\"><\/p>\n<h3 class=\"cw-produkt__titel\">TRDP validation test<\/h3>\n<p>Proven conformity with the TRDP standard through various hardware and interface tests.<\/p>\n<p>        <a class=\"cw-produkt__link\" href=\"https:\/\/www.codewerk.de\/en\/portfolio\/software-products-and-solutions\/trdp-validation-test\/\" data-cw-track=\"pnstack-produkt-trdp-validierungstest\">View product<\/a><br \/>\n      <\/article>\n<article class=\"cw-produkt\">\n        <img decoding=\"async\" src=\"&#x2f;&#x77;&#112;-&#x63;&#x6f;&#110;&#116;e&#x6e;&#x74;&#47;&#117;p&#x6c;&#x6f;&#97;ds&#x2f;&#x32;&#48;2&#x35;&#x2f;&#48;&#50;\/&#x32;&#x35;&#48;&#49;3&#x31;&#x5f;&#67;od&#x65;&#x77;&#101;r&#x6b;&#x5f;&#80;&#114;o&#x64;&#x75;&#107;&#116;d&#x61;&#x72;&#115;te&#x6c;&#x6c;&#117;n&#x67;&#x5f;&#x53;&#111;f&#x74;&#x73;&#105;&#98;a&#x73;&#x5f;&#84;&#82;D&#x50;&#x40;&#50;x&#x2e;&#x70;&#x6e;&#103;\" 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<br \/>\n          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=\"pnstack-produkt-trdp-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 to do without the interface card?<\/h2>\n<p class=\"cw-lead\">Outline the project briefly &ndash; subsystem, controller, operating system.<br \/>\n        We will come back with the next steps.<\/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 PROFINET 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=\"1792783407329\" \/>\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 PROFINET 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>SOFTSIBAS PN Stack A PROFINET stack replaces the interface card With the SOFTSIBAS PN Stack we replace your PC104 card and minimize your integration and maintenance costs. Make an enquiry How the stack integrates SIBAS PN PROFINET IEC 62443-4-2 ISO 9001 ISO 27001 The situation Why the interface card becomes a cost factor Until now, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":17549,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"page-freiform.php","meta":{"_acf_changed":false,"_seopress_titles_title":"SOFTSIBAS PN Stack %%sep%% %%sitetitle%%","_seopress_titles_desc":"The interface card is history: the SOFTSIBAS PN Stack replaces your PC104 card and minimizes integration and maintenance costs. CRA-compliant.","_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":"\/* Seite SOFTSIBAS PN Stack, englische Fassung (17551), Freiform-Nachbau.\n   Kommentare bewusst auf Deutsch, wie auf allen Seiten dieser Familie \u2014 das CSS ist\n   zeichengleich mit der deutschen Seite 16632, damit beide Sprachen nie auseinanderlaufen.\n\n   Basis ist das Seiten-CSS der Schwesterseite SOFTSIBAS PN Validierungstest, das selbst aus\n   der TRDP-Seite stammt. Uebernommen bis auf vier Streichungen und vier Ergaenzungen:\n\n   Gestrichen, weil auf DIESER Seite keine Klasse dazu im Markup steht (Hausregel \u201ekeine Regel\n   ohne Klasse\"): .cw-schritte \/ .cw-schritt* (kein nummerierter Ablauf), .cw-notiz*\n   (kein Downloadhinweis), .cw-karten--3 (nur das Vierer-Raster wird gebraucht),\n   .cw-punkte__titel (toter Code, auf Live nie vorhanden gewesen).\n\n   Ergaenzt: .cw-gegenueber und .cw-motiv, .cw-haken auf hellem Grund, overflow-wrap auf den\n   Ueberschriften, und der Media Query unter 390px im Kontaktband.\n\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   Gemessen am 28.\/29.08.2026 an der deutschen Fassung bei 320 \/ 390 \/ 768 \/ 1024 \/ 1440 \/\n   2560 px: kein waagerechter Ueberlauf, Spaltenzahlen wie vorgesehen. Die englischen Texte\n   sind kuerzer, das Raster ist dasselbe. *\/\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#vorteile,\n#integration,\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. Die Versalien im Elementor-Bestand dieser Seite\n   kamen allein aus der alten Gestaltung, nicht aus dem Text. *\/\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  \/* Vorsorge fuer lange Fachbegriffe. Unterhalb von 390px hat die Website keinen Breakpoint\n     mehr, und ein Wort, das breiter als seine Spalte ist, schiebt sonst die Seite auf.\n     Der eigentliche 320px-Ueberlauf lag NICHT hier, sondern im Kontaktband; siehe dort. *\/\n  overflow-wrap: break-word;\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  overflow-wrap: break-word;\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\/* 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 der Button war dadurch 76 statt 54 px hoch. Die Umgebung setzt border-box\n     nicht garantiert, also steht es hier. Gilt fuer jede Regel mit fester Kastenmasse in\n     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 den Formular-Button im Hero: er oeffnet kein zweites Formular\n   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\/* Die Nachweise stehen ueber der Falzlinie, nicht erst im Trust-Band weiter unten. Bewusst\n   frei gebaut und nicht [cw_pills] \u2014 wie der Shortcode auf Navy aussieht, ist nicht\n   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 62443-4-2\" 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 die Kernaussage des Abschnitts in einem Satz zusammen. Gruen traegt hier keine\n   Schrift, sondern 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\/* ---------- 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). *\/\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 ---------- *\/\n\n\/* Traegt zwei Aufzaehlungen: die vier Integrationsaussagen auf dem weissen Band und die drei\n   System-Check-Fragen auf Navy. Ab 768px zweispaltig \u2014 der Zweispalter steht weiter unten im\n   Tablet-Block.\n\n   Am 29.08.2026 einmal auf durchgehend einspaltig umgestellt und am selben Tag wieder\n   zurueckgenommen: einspaltig traegt optisch nicht. Beide Baender nutzen dieselbe Klasse, die\n   Umstellung trifft also immer beide zugleich. *\/\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   Der Haken traegt keine Information: die Liste sagt dasselbe in Worten, deshalb im Markup\n   `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\/* Ergaenzung: die Punkteliste liegt hier zusaetzlich auf dem weissen Integrations-Band. Auf\n   Weiss traegt ein gruener Haken auf 15-Prozent-Gruen praktisch keinen Kontrast (#9EFC4F auf\n   Weiss rund 1,4:1). Deshalb kippt das Verhaeltnis um: Gruen wird die Flaeche, Navy die\n   Zeichnung \u2014 dasselbe Muster wie beim Primaerbutton. *\/\n.cw-band--weiss .cw-haken,\n.cw-band--soft .cw-haken { background: var(--cw-color-green); }\n\n.cw-band--weiss .cw-haken::before,\n.cw-band--soft .cw-haken::before {\n  border-right-color: var(--cw-color-navy);\n  border-bottom-color: var(--cw-color-navy);\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.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\/* \u201eISO 9001 certified\" war hoeher als \u201eISO 27001 certified\". Deshalb hier drei Dinge zusammen,\n   die die Hoehe unabhaengig vom Theme festnageln: eigene Zeilenhoehe, eine Mindesthoehe als\n   gemeinsames Mass, und weg mit den Aussenabstaenden, die WordPress Listeneintraegen im\n   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.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. *\/\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. *\/\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: gefuelltes Feld, nur eine\n   Oberkante von 3px, keine Seiten- und Unterkante, eckig. Auf der weissen Karte heisst das\n   Fuellung --cw-color-soft und Oberkante --cw-color-inactive. #9AAAB8 ist kein neuer Wert,\n   sondern das Token der Vorzeilen \u2014 das mittlere Grau des Hauses.\n   `background-color` und nicht `background`: das Select traegt seinen Pfeil als\n   `background-image`, die Kurzform wuerde ihn loeschen. Klassennamen aus\n   `plugins\/cod-forms\/assets\/css\/frontend.css` gelesen, nicht geraten.\n   Der Fokus faerbt nur die Oberkante, ueber das Fokus-Token des Plugins. *\/\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\/* Der 320px-Ueberlauf, und was ihn wirklich verursacht hat.\n\n   Auf den Schwesterseiten laeuft das Kontaktband bei 320px Fensterbreite ueber den rechten\n   Rand. Als Ursache war ein langes Wort in der Ueberschrift notiert. Das trifft nicht zu \u2014\n   am 28.08.2026 im Iframe bei 320px nachgemessen: Sichtfeld ohne Rollbalken 305, Container\n   innen 265, Formularkarte tatsaechlich 322 (davon 258 das Formular des Plugins und 64 das\n   Polster der Karte).\n\n   `grid-template-columns: 1fr` ist `minmax(auto, 1fr)`, und dieses `auto` als Minimum ist die\n   Mindestbreite des Inhalts. Die Spur kann deshalb nicht unter 258 + 64 = 322 schrumpfen und\n   schiebt die Seite um 37px auf. Eine Umbruchregel auf der Ueberschrift kann daran nichts\n   aendern.\n\n   Zwei Zeilen loesen es, beide nur unterhalb des kleinsten Breakpoints der Website:\n   `minmax(0, 1fr)` erlaubt der Spur, unter die Mindestbreite ihres Inhalts zu gehen, und das\n   kleinere Polster gibt dem Formular 32px zurueck. Nachgemessen: Karte 265px, Formular kommt\n   mit 201px zurecht, `scrollWidth` gleich `clientWidth`. Oberhalb von 390px aendert der Block\n   nichts. Auf den Validierungstest-Seiten steht diese Regel noch nicht. *\/\n@media (max-width: 389px) {\n  .cw-kontakt__raster { grid-template-columns: minmax(0, 1fr); }\n\n  .cw-formular {\n    padding: var(--cw-space-3);\n    overflow-x: auto;\n  }\n}\n\n\/* ---------- Tablet: 768 bis 1024 ---------- *\/\n\n@media (min-width: 768px) {\n  \/* Die Punkteliste bleibt auch auf Desktop zweispaltig. Eintraege mit Beschreibung lesen\n     sich in zwei breiten Spalten besser als in drei schmalen \u2014 und einspaltig ueber die volle\n     Containerbreite wirken die kurzen Zeilen verloren; am 29.08.2026 ausprobiert und\n     verworfen. 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  \/* 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. *\/\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-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 577px breit \u2014 mehr als 370 waere hier zwar noch nicht\n     Hochskalieren, aber die Spalte soll dem Text nicht davonlaufen. *\/\n  .cw-hero__raster { grid-template-columns: minmax(0, 1fr) 370px; }\n  .cw-hero__bild { width: 370px; }\n}\n\n\/* ---------- Weitere Produkte ----------\n   Aufgebaut wie .cw-karte, nur mit Bild oben. Das Bild bekommt eine feste Hoehe und\n   object-fit: contain, damit die drei unterschiedlich hohen Produktdarstellungen\n   (900 \/ 666 \/ 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\/* ---------- Hero-Bild als Karte ----------\n   Die Produktdarstellung ist NICHT freigestellt. Nachgemessen ueber den Alphakanal:\n   softsibas-pn-stack-big.png (577x1003) ist 0 % transparent und 59,7 % reinweiss, alle vier\n   Ecken deckend weiss. Direkt auf Navy gesetzt ergibt das einen weissen Block. Statt das Bild\n   eigenmaechtig freizustellen bekommt es eine weisse Karte: der weisse Grund wird damit zur\n   Absicht statt zum Fehler. Faellt eine freigestellte Fassung nach, kann diese Regel weg und\n   die Klasse aus dem Markup. *\/\n.cw-hero__bild--karte {\n  background: var(--cw-color-white);\n  border-radius: var(--cw-radius-md);\n  padding: var(--cw-space-4);\n  box-sizing: border-box;\n}\n\n\/* ---------- Karten mit Icon, Vierer-Raster ----------\n   Die vier Vorteile kommen aus dem Elementor-Bestand, dort als Ueberschrift mit Inline-SVG.\n   WordPress filtert Inline-SVG aus dem Seiteninhalt, deshalb liegen die vier Symbole als\n   Dateien in der Mediathek (Staging 21363, 21365, 21367, 21369) \u2014 dieselben Dateien, die auch\n   die Validierungstest-Seiten benutzen. Ihre Dateinamen passen inhaltlich nicht zu dieser\n   Seite; eine Umbenennung wuerde die Adressen dort brechen. Die Zuordnung steht im Markup\n   ueber die Kartentitel. Dateien sind 250x205 mit gruener Tropfenflaeche und\n   Navy-Linienzeichnung, hier auf 88px Hoehe gebracht.\n\n   Die Karten tragen absichtlich KEINEN Fliesstext: im Bestand haben die vier Vorteile keine\n   Beschreibung, und erfunden wird hier nichts. *\/\n.cw-karten--4 { grid-template-columns: 1fr; }\n\n.cw-karte--icon {\n  display: flex;\n  flex-direction: column;\n  gap: var(--cw-space-3);\n}\n\n.cw-karte__icon {\n  width: auto;\n  height: 88px;\n  align-self: flex-start;\n}\n\n.cw-karte--icon .cw-karte__titel { margin: 0; }\n\n@media (min-width: 768px) {\n  .cw-karten--4 { grid-template-columns: repeat(2, 1fr); }\n}\n\n@media (min-width: 1025px) {\n  .cw-karten--4 { grid-template-columns: repeat(4, 1fr); }\n}\n\n\/* ---------- Schaubild ----------\n   Die Bestandsgrafik Infografik_Softsibas_PN@2x.png (2560x1490) zeigt den Aufbau der\n   Einbindung. Nachgemessen: 48,2 % transparent, alle vier Ecken durchsichtig; die inneren\n   Kaesten sind reinweiss (16,7 % der Flaeche). Auf dem weissen Band sitzt sie deshalb ohne\n   Rahmen richtig \u2014 auf einem farbigen Band wuerden die weissen Innenflaechen als Fehler lesen.\n   Sie steht VOR der Punkteliste, nicht statt ihr: das Bild zeigt den Aufbau, die Liste traegt\n   die vier Aussagen als Text. Der Alternativtext gibt den Bildinhalt vollstaendig wieder.\n   2560px Naturbreite, der Container deckelt bei 1200, hochgerechnet wird also nie. *\/\n.cw-schaubild {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  height: auto;\n  margin: 0 0 var(--cw-space-7);\n}\n\n\/* ---------- Text neben Motiv ----------\n   Das Ausgangslage-Band hat ein Bestandsmotiv, das die Aussage traegt \u2014\n   Hardware_Karte@2x.png (1070x902) zeigt die PC104-Karte durchgestrichen. Nachgemessen:\n   61,6 % transparent, alle vier Ecken durchsichtig, also freigestellt; nur ein hellgrauer\n   Schlagschatten liegt darunter, der auf Weiss aufgeht. Deshalb keine Karte wie beim Hero-Bild.\n\n   Einspaltig bis 1024, damit das Motiv auf Mobil unter dem Text steht statt neben ihm. *\/\n.cw-gegenueber {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: var(--cw-space-6);\n  align-items: center;\n}\n\n\/* Gedeckelt auf 420px: die Datei ist 1070px breit, in einer halben Containerspalte wuerde sie\n   sonst die Textspalte dominieren. Bei 320px gemessen schrumpft sie korrekt auf 265px mit. *\/\n.cw-motiv {\n  width: 100%;\n  max-width: 420px;\n  height: auto;\n  justify-self: center;\n}\n\n@media (min-width: 1025px) {\n  .cw-gegenueber {\n    grid-template-columns: minmax(0, 1fr) 420px;\n    gap: var(--cw-space-8);\n  }\n\n  .cw-motiv { justify-self: end; }\n}\n\n\/* ---------- Muster-Hintergrund ----------\n   Die Hausgrafik als Vektor: eine spitze Klammer aus zwei Schenkeln GLEICHER Staerke mit\n   runden Enden, die im SELBEN Punkt zusammenlaufen. Wo sich die Schenkel ueberlappen, wird\n   die Flaeche heller; DIESE UEBERLAPPUNG IST DER TROPFEN. Kein Kreis, kein Gradient.\n   Herleitung und Rohform: Outputs\/2026-08-24 Codewerk Klammer Rohform.\n   Pfad wurzelrelativ, damit die Regel auf Staging und Live gleich greift.\n   Mediathek Staging: Anhang 21391, 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 und zwar \u201enicht zu viel und nicht zu\n   wenig\".\n\n   Die Geometrie gibt den Wert her, geschaetzt wird nichts. Der Tropfenruecken ist ein\n   Halbkreis um den Scheitel (2450,5 \/ 700,9) mit r = 286,2; die Leinwand ist 2560 x 1419 und\n   schneidet den Ruecken rechts bei x = 2560 ab. Damit gibt es zwei Kandidaten:\n\n   | Schnitt | y oben | y unten | Hoehe | Wirkung |\n   |---|---|---|---|---|\n   | Scheitel des Kreises (tangential) | 414,7 | 987,1 | 572,4 | Rundung kuesst die Kante, es bleibt oben und unten ein flacher Streifen stehen |\n   | Kreis am rechten Bildrand | 436,5 | 965,3 | 528,8 | Schnitt und rechter Anschnitt treffen sich in den Ecken |\n\n   Die zweite Fassung ist die gewuenschte: dy = sqrt(286,2\u00b2 - 109,5\u00b2) = 264,4 um die\n   Kreismitte. Daraus\n\n     Bildhoehe : Tropfenhoehe = 1419 \/ 528,8 = 2,6832  ->  background-size: auto 268.32%\n     Position  : 436,5 \/ 528,8 = 0,8255, und P loest 0,8255 - (2,6832 - 1) * P = 0\n                 ->  P = 0,4903  ->  49%\n\n   Ueber ein Canvas mit derselben Geometrie nachgemessen (1425x525, 1425x581, 1425x736):\n   Tropfenpixel von Zeile 0 bis zur letzten Zeile, an der Kante nur noch der Abschnitt bis zur\n   Ecke \u2014 kein flacher Streifen mehr. Die erste Fassung (248.08%) stand kurz auf allen Seiten\n   und wurde am selben Tag ersetzt; wer die Zahl aendert, weiss damit, dass 248,08 schon\n   geprueft und verworfen ist.\n\n   Nur ab 1025px, und das ist der Punkt: erst dort ist das Band flach. Der Tropfen ist 0,9 mal\n   so breit wie hoch \u2014 auf einem hohen, schmalen Band wuerde er breiter als das Band selbst und\n   die ganze Flaeche ausfuellen. Und dort ist auch nichts zu korrigieren: bei einem\n   Seitenverhaeltnis unter 2560:1419 skaliert `cover` ueber die Hoehe, zeigt also die\n   Vorlagenkomposition ohne senkrechten Beschnitt. *\/\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-17551","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\/17551","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=17551"}],"version-history":[{"count":0,"href":"https:\/\/www.codewerk.de\/en\/wp-json\/wp\/v2\/pages\/17551\/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=17551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}