{"id":2289,"date":"2026-07-12T14:59:44","date_gmt":"2026-07-12T12:59:44","guid":{"rendered":"https:\/\/cad-kompass.de\/?p=2289"},"modified":"2026-07-12T21:25:17","modified_gmt":"2026-07-12T19:25:17","slug":"querschnittsaufbau-finder","status":"publish","type":"post","link":"https:\/\/cad-kompass.de\/?p=2289","title":{"rendered":"Querschnittsaufbau-Finder"},"content":{"rendered":"\n<style>\n    .qbf-box {\n        --qbf-primary: #3f5f75;\n        --qbf-primary-dark: #2c4a5e;\n        --qbf-primary-deep: #1e3548;\n        --qbf-ink: #1e293b;\n        --qbf-text: #334155;\n        --qbf-muted: #64748b;\n        --qbf-faint: #94a3b8;\n        --qbf-border: #c8d6e0;\n        --qbf-surface: #f7f9fb;\n        \/* Kategoriefarben tool-spezifisch: je Strassen-Element eine ruhige Farbe, damit die Karten scanbar bleiben *\/\n        --qbf-Fahrbahn: #3f5f75;\n        --qbf-Bord: #0891b2;\n        --qbf-Gehweg: #7c3aed;\n        --qbf-Bankett: #0e7490;\n        --qbf-Median: #a16207;\n        --qbf-Boeschung: #e8913a;\n        --qbf-Oberbau: #475569;\n        --qbf-Allgemein: #059669;\n        --qbf-Rsto: #be123c;\n        background: var(--qbf-surface);\n        border: 3px solid var(--qbf-primary);\n        border-radius: 8px;\n        margin: 28px 0;\n        overflow: hidden;\n        position: relative;\n        font-family: inherit;\n        color: var(--qbf-text);\n        line-height: 1.6;\n    }\n    .qbf-box *, .qbf-box *::before, .qbf-box *::after { box-sizing: border-box; }\n\n    .qbf-header {\n        background: linear-gradient(135deg, var(--qbf-primary-deep) 0%, var(--qbf-primary-dark) 100%);\n        padding: 20px 28px 18px;\n        position: relative;\n        overflow: hidden;\n    }\n    .qbf-header::after {\n        content: '';\n        position: absolute;\n        bottom: 0; left: 0; right: 0;\n        height: 3px;\n        background: repeating-linear-gradient(90deg, var(--qbf-primary) 0px, var(--qbf-primary) 8px, transparent 8px, transparent 12px);\n    }\n    .qbf-header-top { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }\n    .qbf-header-icon { width: 36px; height: 36px; flex-shrink: 0; opacity: 0.9; }\n    .qbf-box .qbf-box-title {\n        font-size: 1.15rem; font-weight: 700; color: #fff;\n        margin: 0; padding: 0; letter-spacing: 0.01em; display: inline;\n    }\n    .qbf-box .qbf-box-desc {\n        font-size: 0.85rem; color: rgba(255,255,255,0.66);\n        margin: 0; padding: 0; line-height: 1.5; display: block;\n    }\n\n    .qbf-body { padding: 22px 28px 24px; }\n\n    .qbf-privacy {\n        background: #f0fdf4;\n        border: 1px solid #bbf7d0;\n        border-radius: 3px;\n        padding: 9px 14px;\n        margin-bottom: 12px;\n        font-size: 0.8rem;\n        color: #15803d;\n        line-height: 1.5;\n        display: flex; align-items: center; gap: 8px;\n    }\n    .qbf-privacy::before { content: '\\1F512'; flex-shrink: 0; font-size: 0.9rem; }\n\n    .qbf-intro {\n        background: #f0f5fa;\n        border-left: 3px solid var(--qbf-primary);\n        border-radius: 0 4px 4px 0;\n        padding: 11px 15px;\n        margin-bottom: 12px;\n        font-size: 0.84rem;\n        color: var(--qbf-text);\n    }\n    .qbf-intro strong { color: var(--qbf-ink); }\n\n    .qbf-hedge {\n        background: #fffbeb;\n        border: 1px solid #f4cf81;\n        border-left: 3px solid #d97706;\n        border-radius: 0 4px 4px 0;\n        padding: 9px 14px;\n        margin-bottom: 16px;\n        font-size: 0.79rem;\n        color: #92700c;\n        line-height: 1.5;\n    }\n    .qbf-hedge strong { color: #92700c; }\n\n    .qbf-legend {\n        background: #fff;\n        border: 1px solid var(--qbf-border);\n        border-radius: 3px;\n        margin-bottom: 16px;\n        overflow: hidden;\n    }\n    .qbf-legend > summary {\n        list-style: none;\n        cursor: pointer;\n        padding: 10px 14px;\n        font-size: 0.82rem;\n        font-weight: 600;\n        color: var(--qbf-primary);\n        background: #f0f5fa;\n        user-select: none;\n        display: flex;\n        align-items: center;\n        gap: 10px;\n    }\n    .qbf-legend > summary::-webkit-details-marker { display: none; }\n    .qbf-legend > summary::before {\n        content: \"\\25B8\";\n        font-size: 0.8rem;\n        transition: transform 0.2s;\n        display: inline-block;\n        width: 0.9em;\n    }\n    .qbf-legend[open] > summary::before { transform: rotate(90deg); }\n    .qbf-legend-body { padding: 14px 16px 16px; font-size: 0.84rem; }\n    .qbf-legend-note {\n        font-size: 0.81rem;\n        color: var(--qbf-muted);\n        line-height: 1.55;\n        margin-bottom: 10px;\n    }\n    .qbf-legend-note strong { color: var(--qbf-primary); }\n    .qbf-legend-note code, .qbf-detail dd code, .qbf-card-en code {\n        font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n        font-size: 0.78rem;\n        background: #f0f5fa;\n        padding: 1px 5px;\n        border-radius: 2px;\n        color: var(--qbf-primary-dark);\n    }\n    .qbf-legend-steps {\n        margin: 6px 0 0;\n        padding: 10px 12px;\n        background: #f7f9fb;\n        border: 1px dashed var(--qbf-border);\n        border-radius: 3px;\n        font-size: 0.8rem;\n        color: var(--qbf-text);\n        line-height: 1.6;\n    }\n\n    .qbf-search {\n        width: 100%;\n        padding: 10px 14px;\n        font-size: 0.92rem;\n        border: 1px solid var(--qbf-border);\n        border-radius: 2px;\n        font-family: inherit;\n        color: var(--qbf-ink);\n        background: #fff;\n        transition: border-color 0.15s, box-shadow 0.15s;\n        margin-bottom: 14px;\n        -webkit-appearance: none;\n    }\n    .qbf-search:focus {\n        outline: none;\n        border-color: var(--qbf-primary);\n        box-shadow: 0 0 0 2px rgba(63,95,117,0.12);\n    }\n    .qbf-search::placeholder { color: var(--qbf-faint); }\n\n    .qbf-echips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 14px; }\n    .qbf-echip {\n        padding: 4px 11px;\n        font-size: 0.8rem;\n        font-family: inherit;\n        border: 1px solid var(--qbf-border);\n        border-radius: 999px;\n        background: #f0f5fa;\n        color: var(--qbf-primary);\n        cursor: pointer;\n        line-height: 1.4;\n        transition: background 0.15s, color 0.15s, border-color 0.15s;\n    }\n    .qbf-echip:hover { background: var(--qbf-primary); color: #fff; border-color: var(--qbf-primary); }\n    .qbf-hint {\n        font-size: 0.82rem;\n        color: #92700c;\n        background: #fffbeb;\n        border: 1px solid #f4cf81;\n        border-left: 3px solid #d97706;\n        border-radius: 0 3px 3px 0;\n        padding: 7px 12px;\n        margin-bottom: 10px;\n    }\n\n    @media (max-width: 560px) {\n        .qbf-card { flex-direction: column; }\n        .qbf-card-svg { flex-basis: auto; width: 100%; height: 96px; }\n    }\n\n    .qbf-filter-group { margin-bottom: 10px; }\n    .qbf-filter-label {\n        font-size: 0.78rem;\n        font-weight: 600;\n        color: var(--qbf-muted);\n        text-transform: uppercase;\n        letter-spacing: 0.05em;\n        margin-bottom: 6px;\n        display: block;\n    }\n    .qbf-filters { display: flex; flex-wrap: wrap; gap: 6px; }\n    .qbf-btn {\n        padding: 5px 12px;\n        font-size: 0.81rem;\n        font-family: inherit;\n        border: 1px solid var(--qbf-border);\n        border-radius: 2px;\n        background: #fff;\n        color: var(--qbf-muted);\n        cursor: pointer;\n        transition: background 0.15s, color 0.15s, border-color 0.15s;\n        line-height: 1.4;\n    }\n    .qbf-btn:hover { background: #eef2f6; border-color: var(--qbf-primary); color: var(--qbf-ink); }\n    .qbf-btn.active { background: var(--qbf-primary); color: #fff; border-color: var(--qbf-primary); }\n    .qbf-btn.qbf-Fahrbahn.active { background: var(--qbf-Fahrbahn); border-color: var(--qbf-Fahrbahn); }\n    .qbf-btn.qbf-Bord.active { background: var(--qbf-Bord); border-color: var(--qbf-Bord); }\n    .qbf-btn.qbf-Gehweg.active { background: var(--qbf-Gehweg); border-color: var(--qbf-Gehweg); }\n    .qbf-btn.qbf-Bankett.active { background: var(--qbf-Bankett); border-color: var(--qbf-Bankett); }\n    .qbf-btn.qbf-Median.active { background: var(--qbf-Median); border-color: var(--qbf-Median); }\n    .qbf-btn.qbf-Boeschung.active { background: var(--qbf-Boeschung); border-color: var(--qbf-Boeschung); }\n    .qbf-btn.qbf-Oberbau.active { background: var(--qbf-Oberbau); border-color: var(--qbf-Oberbau); }\n    .qbf-btn.qbf-Allgemein.active { background: var(--qbf-Allgemein); border-color: var(--qbf-Allgemein); }\n    .qbf-btn.qbf-Rsto.active { background: var(--qbf-Rsto); border-color: var(--qbf-Rsto); }\n\n    .qbf-count-row {\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        margin: 14px 0 10px;\n        font-size: 0.84rem;\n        color: var(--qbf-muted);\n    }\n    .qbf-reset {\n        background: transparent;\n        border: 0;\n        color: var(--qbf-primary);\n        font-size: 0.8rem;\n        font-family: inherit;\n        cursor: pointer;\n        padding: 0;\n        text-decoration: underline;\n    }\n    .qbf-reset:hover { color: var(--qbf-primary-dark); }\n\n    .qbf-results { display: flex; flex-direction: column; gap: 10px; }\n    .qbf-card {\n        background: #fff;\n        border: 1px solid var(--qbf-border);\n        border-left: 3px solid var(--qbf-primary);\n        padding: 12px 16px;\n        border-radius: 0 2px 2px 0;\n        display: flex;\n        gap: 14px;\n        align-items: flex-start;\n    }\n    .qbf-card-svg {\n        flex: 0 0 132px;\n        width: 132px;\n        height: 84px;\n        border: 1px solid #d9e4ec;\n        border-radius: 4px;\n        background: #fff;\n        overflow: hidden;\n    }\n    .qbf-card-svg svg { width: 100%; height: 100%; display: block; }\n    .qbf-card-main { flex: 1 1 auto; min-width: 0; }\n    .qbf-card.kat-Fahrbahn { border-left-color: var(--qbf-Fahrbahn); }\n    .qbf-card.kat-Bord { border-left-color: var(--qbf-Bord); }\n    .qbf-card.kat-Gehweg { border-left-color: var(--qbf-Gehweg); }\n    .qbf-card.kat-Bankett { border-left-color: var(--qbf-Bankett); }\n    .qbf-card.kat-Median { border-left-color: var(--qbf-Median); }\n    .qbf-card.kat-Boeschung { border-left-color: var(--qbf-Boeschung); }\n    .qbf-card.kat-Oberbau { border-left-color: var(--qbf-Oberbau); }\n    .qbf-card.kat-Allgemein { border-left-color: var(--qbf-Allgemein); }\n    .qbf-card.kat-Rsto { border-left-color: var(--qbf-Rsto); }\n    .qbf-card-header {\n        display: flex;\n        align-items: baseline;\n        gap: 8px;\n        flex-wrap: wrap;\n        margin-bottom: 6px;\n    }\n    .qbf-card-name {\n        font-size: 0.98rem;\n        font-weight: 700;\n        color: var(--qbf-ink);\n        line-height: 1.35;\n    }\n    .qbf-badge {\n        display: inline-block;\n        font-size: 0.7rem;\n        font-weight: 600;\n        padding: 2px 7px;\n        border-radius: 2px;\n        background: #f0f5fa;\n        color: var(--qbf-primary);\n        border: 1px solid var(--qbf-border);\n        white-space: nowrap;\n        letter-spacing: 0.03em;\n    }\n    .qbf-badge-kat { text-transform: uppercase; }\n    .qbf-badge-Fahrbahn { background: #eef3f7; color: var(--qbf-Fahrbahn); border-color: #cbd9e2; }\n    .qbf-badge-Bord { background: #ecfeff; color: var(--qbf-Bord); border-color: #a5f3fc; }\n    .qbf-badge-Gehweg { background: #f5f3ff; color: var(--qbf-Gehweg); border-color: #ddd6fe; }\n    .qbf-badge-Bankett { background: #ecfeff; color: var(--qbf-Bankett); border-color: #99e2ea; }\n    .qbf-badge-Median { background: #fdf6e3; color: var(--qbf-Median); border-color: #f4dfa0; }\n    .qbf-badge-Boeschung { background: #fdf3e7; color: #b45309; border-color: #f4cf81; }\n    .qbf-badge-Oberbau { background: #f1f5f9; color: var(--qbf-Oberbau); border-color: #cbd5e1; }\n    .qbf-badge-Allgemein { background: #ecfdf5; color: var(--qbf-Allgemein); border-color: #bbf7d0; }\n    .qbf-badge-Rsto { background: #fff1f2; color: var(--qbf-Rsto); border-color: #fecdd3; }\n    .qbf-badge-reiter { background: #f8fafc; color: var(--qbf-muted); border-color: var(--qbf-border); }\n    .qbf-badge-cc { background: #fff1f2; color: var(--qbf-Rsto); border-color: #fecdd3; font-weight: 700; }\n    .qbf-badge-empf { background: #ecfdf5; color: #059669; border-color: #bbf7d0; font-weight: 700; }\n    .qbf-card-en {\n        font-size: 0.78rem;\n        color: var(--qbf-muted);\n        margin-bottom: 3px;\n    }\n    .qbf-card-desc {\n        font-size: 0.85rem;\n        color: var(--qbf-text);\n        line-height: 1.6;\n        margin-bottom: 2px;\n    }\n\n    .qbf-detail {\n        margin-top: 8px;\n        border-top: 1px dashed var(--qbf-border);\n        padding-top: 6px;\n    }\n    .qbf-detail > summary {\n        list-style: none;\n        cursor: pointer;\n        font-size: 0.78rem;\n        font-weight: 600;\n        color: var(--qbf-primary);\n        padding: 4px 0;\n        display: flex;\n        align-items: center;\n        gap: 6px;\n        user-select: none;\n    }\n    .qbf-detail > summary::-webkit-details-marker { display: none; }\n    .qbf-detail > summary::before {\n        content: \"\\25B8\";\n        font-size: 0.72rem;\n        transition: transform 0.2s;\n        display: inline-block;\n    }\n    .qbf-detail[open] > summary::before { transform: rotate(90deg); }\n    .qbf-detail dl {\n        display: grid;\n        grid-template-columns: 150px 1fr;\n        gap: 5px 10px;\n        margin: 6px 0 0;\n        font-size: 0.8rem;\n        line-height: 1.55;\n    }\n    .qbf-detail dt {\n        color: var(--qbf-muted);\n        font-weight: 600;\n        text-transform: uppercase;\n        font-size: 0.7rem;\n        letter-spacing: 0.04em;\n        padding-top: 3px;\n    }\n    .qbf-detail dd { color: var(--qbf-text); margin: 0; }\n    .qbf-detail dd.qbf-find {\n        background: #f0f5fa;\n        border-left: 3px solid var(--qbf-primary);\n        border-radius: 0 3px 3px 0;\n        padding: 6px 10px;\n    }\n    .qbf-detail dd.qbf-alt {\n        background: #fff1f2;\n        border-left: 3px solid var(--qbf-Rsto);\n        border-radius: 0 3px 3px 0;\n        padding: 6px 10px;\n    }\n\n    .qbf-empty {\n        text-align: center;\n        padding: 32px 16px;\n        color: var(--qbf-muted);\n        font-size: 0.9rem;\n        background: #fff;\n        border: 1px dashed var(--qbf-border);\n        border-radius: 2px;\n    }\n\n    \/* ---- Aktions-Buttons (box-gescopt) ---- *\/\n    .qbf-box .qbf-act {\n        -webkit-appearance: none !important; appearance: none !important;\n        font-family: inherit !important; font-size: 0.78rem !important; font-weight: 700 !important;\n        color: var(--qbf-primary) !important; background: #fff !important; border: 1px solid var(--qbf-border) !important;\n        border-radius: 3px !important; min-height: 32px !important; padding: 5px 12px !important; cursor: pointer !important;\n        box-shadow: none !important; line-height: 1.2 !important; transition: background 0.15s, color 0.15s, border-color 0.15s;\n    }\n    .qbf-box .qbf-act:hover { background: var(--qbf-primary) !important; color: #fff !important; border-color: var(--qbf-primary) !important; }\n    .qbf-box .qbf-act:focus-visible { outline: 2px solid var(--qbf-primary) !important; outline-offset: 2px !important; }\n    .qbf-box .qbf-act:active { background: var(--qbf-primary-dark) !important; }\n\n    .qbf-card-actions { display: inline-flex; gap: 6px; margin-left: auto; }\n    .qbf-box .qbf-cmp {\n        -webkit-appearance: none !important; appearance: none !important;\n        font-family: inherit !important; font-size: 0.72rem !important; font-weight: 700 !important;\n        color: var(--qbf-primary) !important; background: #fff !important; border: 1px solid var(--qbf-border) !important;\n        border-radius: 3px !important; min-height: 28px !important; padding: 3px 9px !important; cursor: pointer !important;\n        box-shadow: none !important; white-space: nowrap !important; transition: background 0.15s, color 0.15s, border-color 0.15s;\n    }\n    .qbf-box .qbf-cmp:hover { border-color: var(--qbf-primary) !important; color: var(--qbf-primary-dark) !important; }\n    .qbf-box .qbf-cmp.is-on { background: var(--qbf-primary) !important; color: #fff !important; border-color: var(--qbf-primary) !important; }\n    .qbf-box .qbf-cmp:focus-visible { outline: 2px solid var(--qbf-primary) !important; outline-offset: 2px !important; }\n    .qbf-box .qbf-copy {\n        -webkit-appearance: none !important; appearance: none !important;\n        font-family: inherit !important; font-size: 0.7rem !important; font-weight: 700 !important;\n        color: var(--qbf-muted) !important; background: transparent !important; border: 1px solid var(--qbf-border) !important;\n        border-radius: 3px !important; min-height: 22px !important; padding: 1px 8px !important; cursor: pointer !important;\n        box-shadow: none !important; margin-left: 8px !important; transition: background 0.15s, color 0.15s, border-color 0.15s;\n    }\n    .qbf-box .qbf-copy:hover { background: var(--qbf-primary) !important; color: #fff !important; border-color: var(--qbf-primary) !important; }\n    .qbf-box .qbf-copy:focus-visible { outline: 2px solid var(--qbf-primary) !important; outline-offset: 2px !important; }\n\n    \/* ---- Vergleich ---- *\/\n    .qbf-cmpbar { display: none; align-items: center; gap: 12px; flex-wrap: wrap; background: #f0f5fa; border: 1px solid var(--qbf-border); border-radius: 4px; padding: 8px 14px; margin-bottom: 12px; font-size: 0.84rem; color: var(--qbf-text); }\n    .qbf-cmpbar.is-on { display: flex; }\n    .qbf-compare { display: none; border: 1px solid var(--qbf-border); border-radius: 4px; background: #fff; margin-bottom: 14px; overflow: hidden; }\n    .qbf-compare-head { display: flex; align-items: center; justify-content: space-between; padding: 8px 14px; background: #f0f5fa; border-bottom: 1px solid var(--qbf-border); font-size: 0.86rem; color: var(--qbf-primary); }\n    .qbf-compare-scroll { overflow-x: auto; }\n    .qbf-compare-grid { display: grid; min-width: min-content; }\n    .qbf-cmp-rowlabel { font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.04em; font-weight: 800; color: var(--qbf-muted); padding: 8px 10px; border-top: 1px solid #eef2f7; background: #fafcfd; }\n    .qbf-cmp-cell { font-size: 0.8rem; color: var(--qbf-text); padding: 8px 10px; border-top: 1px solid #eef2f7; border-left: 1px solid #eef2f7; line-height: 1.5; }\n    .qbf-cmp-cell code { font-family: ui-monospace, Menlo, monospace; font-size: 0.76rem; background: #f0f5fa; padding: 1px 5px; border-radius: 2px; color: var(--qbf-primary-dark); }\n    .qbf-cmp-svg { border: 1px solid var(--qbf-border); border-radius: 4px; }\n    .qbf-cmp-svg svg { width: 100%; height: auto; display: block; }\n\n    \/* ---- Gruppen-Zwischen\u00fcberschrift ---- *\/\n    .qbf-group-head { font-size: 0.74rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; color: var(--qbf-muted); padding: 8px 0 4px; margin-top: 8px; border-bottom: 1px solid var(--qbf-border); }\n    .qbf-group-head:first-child { margin-top: 0; }\n\n    @media (max-width: 900px) {\n        .qbf-header { padding: 16px 20px 14px; }\n        .qbf-body { padding: 18px 20px 20px; }\n        .qbf-filters { gap: 5px; }\n        .qbf-btn { font-size: 0.77rem; padding: 4px 9px; }\n        .qbf-detail dl { grid-template-columns: 1fr; gap: 0; }\n        .qbf-detail dt { padding-top: 6px; }\n    }\n\n    \/* ---- Anwendungsbereich-Vorfilter ---- *\/\n    .qbf-doms { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }\n    .qbf-box .qbf-dom, .qbf-box .qbf-fac {\n        -webkit-appearance: none !important; appearance: none !important;\n        font-family: inherit !important; font-size: 0.8rem !important; font-weight: 600 !important;\n        color: var(--qbf-muted) !important; background: #fff !important; border: 1px solid var(--qbf-border) !important;\n        border-radius: 999px !important; min-height: 30px !important; padding: 4px 12px !important; cursor: pointer !important;\n        box-shadow: none !important; display: inline-flex !important; align-items: center !important; gap: 7px !important;\n        transition: background 0.15s, color 0.15s, border-color 0.15s;\n    }\n    .qbf-box .qbf-dom:hover, .qbf-box .qbf-fac:hover { border-color: var(--qbf-primary) !important; color: var(--qbf-ink) !important; }\n    .qbf-box .qbf-dom.is-on, .qbf-box .qbf-fac.is-on { background: var(--qbf-primary) !important; color: #fff !important; border-color: var(--qbf-primary) !important; }\n    .qbf-box .qbf-dom:focus-visible, .qbf-box .qbf-fac:focus-visible { outline: 2px solid var(--qbf-primary) !important; outline-offset: 2px !important; }\n    .qbf-dom-n { font-size: 0.7rem; font-weight: 800; background: rgba(0,0,0,0.08); border-radius: 999px; padding: 0 6px; min-width: 18px; text-align: center; }\n    .qbf-box .qbf-dom.is-on .qbf-dom-n, .qbf-box .qbf-fac.is-on .qbf-dom-n { background: rgba(255,255,255,0.22); }\n    .qbf-dom-note { font-size: 0.78rem; color: var(--qbf-muted); line-height: 1.5; margin-top: 4px; }\n    .qbf-fambar { display: none; align-items: center; gap: 10px; flex-wrap: wrap; background: #f0f5fa; border: 1px solid var(--qbf-border); border-radius: 4px; padding: 7px 14px; margin-bottom: 12px; font-size: 0.84rem; color: var(--qbf-text); }\n    .qbf-box button.qbf-badge { -webkit-appearance: none !important; appearance: none !important; font-family: inherit !important; cursor: pointer !important; line-height: 1.4 !important; }\n    .qbf-box button.qbf-badge:hover { text-decoration: underline; }\n    .qbf-box button.qbf-badge:focus-visible { outline: 2px solid var(--qbf-primary) !important; outline-offset: 2px !important; }\n\n    \/* Anwendungsbereich-Badge auf Karten *\/\n    .qbf-badge-dom { background: #eef2f6; color: var(--qbf-primary-dark); border-color: #cbd9e2; text-transform: uppercase; letter-spacing: 0.03em; }\n\n    \/* Neue Kategorie-Farben (Nischen-Domaenen) *\/\n    .qbf-box { --qbf-Bruecke: #7e22ce; --qbf-Schiene: #b45309; --qbf-Graben: #0369a1; --qbf-Stuetzwand: #4d7c0f; }\n    .qbf-card.kat-Bruecke { border-left-color: var(--qbf-Bruecke); }\n    .qbf-card.kat-Schiene { border-left-color: var(--qbf-Schiene); }\n    .qbf-card.kat-Graben { border-left-color: var(--qbf-Graben); }\n    .qbf-card.kat-Stuetzwand { border-left-color: var(--qbf-Stuetzwand); }\n    .qbf-badge-Bruecke { background: #f6edfd; color: #7e22ce; border-color: #e2ccf7; }\n    .qbf-badge-Schiene { background: #fdf3e7; color: #b45309; border-color: #f4cf81; }\n    .qbf-badge-Graben { background: #e8f2fb; color: #0369a1; border-color: #bcdcf3; }\n    .qbf-badge-Stuetzwand { background: #f0f6e6; color: #4d7c0f; border-color: #d3e6b3; }\n\n    \/* Vergleichsleiste dauerhaft sichtbar (Kern-Funktion) *\/\n    .qbf-cmpbar { display: flex; }\n<\/style>\n\n<div class=\"qbf-box\">\n    <div class=\"qbf-header\">\n        <div class=\"qbf-header-top\">\n            <svg class=\"qbf-header-icon\" viewBox=\"0 0 36 36\" fill=\"none\" aria-hidden=\"true\">\n                <line x1=\"18\" y1=\"4\" x2=\"18\" y2=\"32\" stroke=\"rgba(255,255,255,0.4)\" stroke-width=\"1.2\" stroke-dasharray=\"2 2\"\/>\n                <circle cx=\"18\" cy=\"15\" r=\"2\" fill=\"none\" stroke=\"rgba(255,255,255,0.7)\" stroke-width=\"1.2\"\/>\n                <path d=\"M18 15 L27 19 L31 27\" stroke=\"rgba(255,255,255,0.92)\" stroke-width=\"1.8\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                <path d=\"M18 15 L9 19 L5 27\" stroke=\"rgba(255,255,255,0.55)\" stroke-width=\"1.8\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                <line x1=\"3\" y1=\"27\" x2=\"33\" y2=\"27\" stroke=\"rgba(255,255,255,0.5)\" stroke-width=\"1.4\" stroke-linecap=\"round\"\/>\n                <circle cx=\"27\" cy=\"19\" r=\"1.5\" fill=\"rgba(255,255,255,0.92)\"\/>\n            <\/svg>\n            <span class=\"qbf-box-title\">Querschnittsbestandteil-Finder<\/span>\n        <\/div>\n        <span class=\"qbf-box-desc\">Der komplette Katalog der Standard-Querschnittsbestandteile (Subassemblies) plus DACH Country Kit &ndash; mit Anwendungsbereich-Vorfilter, starker Suche und Vergleich von Parametern und Codes.<\/span>\n    <\/div>\n\n    <div class=\"qbf-body\">\n        <div class=\"qbf-privacy\">L&auml;uft komplett im Browser. Keine Daten verlassen deinen Rechner.<\/div>\n\n        <div class=\"qbf-intro\">\n            <strong>Nachschlagen und vergleichen:<\/strong> der komplette Katalog der Standard-Querschnittsbestandteile (Subassemblies) plus DACH Country Kit. Grenz oben den <strong>Anwendungsbereich<\/strong> ein, tipp ein Suchwort (z.&nbsp;B. &bdquo;Asphalt&ldquo;, &bdquo;Gel&auml;ndeanschluss&ldquo;, &bdquo;Kantstein&ldquo;, &bdquo;Schotter&ldquo;) und stell bis zu drei Bestandteile im <strong>Vergleich<\/strong> gegen&uuml;ber.\n        <\/div>\n\n        <div class=\"qbf-hedge\">\n            <strong>Fundort-Hinweis:<\/strong> Angaben f&uuml;r eine Standardinstallation, Civil&nbsp;3D 2026\/2027, mit DACH Country Kit. Der genaue Fundort (Palettengruppe, Reiter, Name) kann je Installation oder angepasster Werkzeugpalette abweichen. Deutsche Palettennamen sind versionsabh&auml;ngig; die <strong>Country-Kit-Eintr&auml;ge (RStO)<\/strong> und die Namen aus den Nischen-Bereichen (Schiene, Br&uuml;cke, Graben, St&uuml;tzwand) sind am eigenen, installierten Kit zu best&auml;tigen.\n        <\/div>\n\n        <details class=\"qbf-legend\">\n            <summary>So kommst du vom Namen zum Bestandteil in Civil&nbsp;3D<\/summary>\n            <div class=\"qbf-legend-body\">\n                <div class=\"qbf-legend-note\">\n                    Die Bestandteile liegen in den <strong>Werkzeugpaletten<\/strong>, nicht im <strong>Toolspace<\/strong> (das ist das Fenster mit Prospektor\/Einstellungen &ndash; ein anderes Fenster). Es gibt <strong>keinen eigenen Befehl je Bestandteil<\/strong>: du klickst das Werkzeug in der Palette an, stellst Parameter ein und setzt den Symbolpunkt.\n                <\/div>\n                <div class=\"qbf-legend-steps\">\n                    <strong>Der Weg (f&uuml;r jeden Bestandteil gleich):<\/strong><br>\n                    1. Werkzeugpaletten &ouml;ffnen &ndash; <code>Strg+3<\/code> oder Befehl <code>TOOLPALETTES<\/code> (oder Register Start &rsaquo; Paletten &rsaquo; Werkzeugpaletten).<br>\n                    2. Palettengruppe w&auml;hlen &ndash; Rechtsklick auf die Titelleiste, dann z.&nbsp;B. <em>Civil &#8211; Metrische Querschnittsbestandteile<\/em>.<br>\n                    3. Registerkarte (Reiter) w&auml;hlen &ndash; z.&nbsp;B. Fahrstreifen, Bordsteine, B&ouml;schungsfu&szlig;.<br>\n                    4. Werkzeug anklicken &ndash; Seite\/Breite\/Neigung in der Eigenschaften-Palette setzen.<br>\n                    5. Symbolpunkt in der Zeichnung setzen (Basislinie, dann Au&szlig;enkante des vorigen Bestandteils).\n                <\/div>\n                <div class=\"qbf-legend-note\" style=\"margin-top:10px;\">\n                    Nicht-Standard-Bestandteile (Nische) liegen ggf. nicht in der Default-Palette, sondern im <strong>Katalog-Browser<\/strong> (Werkzeugkatalog) &ndash; von dort in die Palette ziehen. Die <strong>Codes<\/strong> (Punkt-, Verkn&uuml;pfungs-, Profilartcode) je Eintrag sind &bdquo;typisch&ldquo;, nicht garantiert; sie h&auml;ngen am Bestandteil und am Codestilsatz.\n                <\/div>\n            <\/div>\n        <\/details>\n\n        <div class=\"qbf-filter-group\">\n            <span class=\"qbf-filter-label\">Anwendungsbereich (was du planst)<\/span>\n            <div class=\"qbf-doms\" id=\"qbfDoms\"><\/div>\n            <div class=\"qbf-dom-note\">Fachfremde Bereiche sind zu Beginn ausgeblendet. Zum Ein- oder Ausblenden den Bereich antippen; die Zahl zeigt, wie viele Bestandteile darin liegen.<\/div>\n        <\/div>\n\n        <div class=\"qbf-filter-group\">\n            <span class=\"qbf-filter-label\">Eigenschaften<\/span>\n            <div class=\"qbf-doms\" id=\"qbfFacs\"><\/div>\n        <\/div>\n\n        <input type=\"text\" class=\"qbf-search\" id=\"qbfSearch\" placeholder=\"Was suchst du? (z.B. Asphalt, B&ouml;schung, Kantstein, Frostschutz, Schotter, St&uuml;tzwand, Marker ...)\" oninput=\"qbfFilter()\">\n\n        <div class=\"qbf-filter-label\">Schnellstart<\/div>\n        <div class=\"qbf-echips\">\n            <button type=\"button\" class=\"qbf-echip\" onclick=\"qbfChip('Fahrbahn')\">Fahrbahn<\/button>\n            <button type=\"button\" class=\"qbf-echip\" onclick=\"qbfChip('Asphalt')\">Asphalt<\/button>\n            <button type=\"button\" class=\"qbf-echip\" onclick=\"qbfChip('Bankett')\">Bankett<\/button>\n            <button type=\"button\" class=\"qbf-echip\" onclick=\"qbfChip('B&ouml;schung')\">B&ouml;schung<\/button>\n            <button type=\"button\" class=\"qbf-echip\" onclick=\"qbfChip('Bordstein')\">Bordstein<\/button>\n            <button type=\"button\" class=\"qbf-echip\" onclick=\"qbfChip('Rinne')\">Rinne<\/button>\n            <button type=\"button\" class=\"qbf-echip\" onclick=\"qbfChip('Gehweg')\">Gehweg<\/button>\n            <button type=\"button\" class=\"qbf-echip\" onclick=\"qbfChip('Mittelstreifen')\">Mittelstreifen<\/button>\n            <button type=\"button\" class=\"qbf-echip\" onclick=\"qbfChip('Oberbau')\">Oberbau<\/button>\n            <button type=\"button\" class=\"qbf-echip\" onclick=\"qbfChip('Marker')\">Marker<\/button>\n        <\/div>\n\n        <div class=\"qbf-cmpbar is-on\" id=\"qbfCmpBar\">\n            <span id=\"qbfCmpBarText\">Vergleich: pro Karte &bdquo;Vergleichen&ldquo; klicken (2 bis 3 Bestandteile).<\/span>\n            <button type=\"button\" class=\"qbf-act\" data-qbf=\"cmpopen\">Vergleich anzeigen<\/button>\n            <button type=\"button\" class=\"qbf-act\" data-qbf=\"cmpclear\">Auswahl leeren<\/button>\n        <\/div>\n        <div class=\"qbf-compare\" id=\"qbfComparePanel\"><\/div>\n        <div class=\"qbf-fambar\" id=\"qbfFamBar\"><\/div>\n        <div class=\"qbf-count-row\">\n            <span id=\"qbfCount\">0 Bestandteile<\/span>\n            <button type=\"button\" class=\"qbf-reset\" onclick=\"qbfResetAll()\">Filter zur&uuml;cksetzen<\/button>\n        <\/div>\n        <div class=\"qbf-hint\" id=\"qbfHint\" style=\"display:none;\"><\/div>\n        <div class=\"qbf-results\" id=\"qbfResults\"><\/div>\n    <\/div>\n<\/div>\n\n<script>\n(function() {\n    \"use strict\";\n\n    \/\/ Entity-Zeichen zur Laufzeit ueber Zeichencodes bauen, damit im Script kein\n    \/\/ rohes Ampersand steht (WordPress wuerde es zu einer kaputten Entity kodieren).\n    var AMP = String.fromCharCode(38);\n\n    function esc(s) {\n        s = String(s == null ? \"\" : s);\n        var out = \"\";\n        for (var i = 0; i < s.length; i++) {\n            var c = s.charCodeAt(i);\n            if (c === 38) { out += AMP + \"amp;\"; }\n            else if (c === 60) { out += AMP + \"lt;\"; }\n            else if (c === 62) { out += AMP + \"gt;\"; }\n            else if (c === 34) { out += AMP + \"quot;\"; }\n            else { out += s.charAt(i); }\n        }\n        return out;\n    }\n\n    var G_STD = \"Civil - Metrische Querschnittsbestandteile\";\n    var G_CC = \"Country Kit Deutschland (DACH)\";\n\n    var DATA = [\n        \/\/ ===================== FAHRBAHN (Lanes) =====================\n        { name: \"Fahrstreifen mit \u00dcberh\u00f6hung (au\u00dfen oder innen)\", en: \"LaneSuperelevationAOR\", kat: \"Fahrbahn\", reiter: \"Fahrstreifen\", gruppe: G_STD, palette: \"Fahrspur\u00dcberh\u00f6hungAu\u00dfenoderInnen\",\n          zweck: \"Fahrbahnh\u00e4lfte mit Querneigung, die \u00dcberh\u00f6hung wahlweise au\u00dfen oder innen unterst\u00fctzt. Die erste Wahl, wenn die Trasse \u00fcberh\u00f6ht wird und Drehpunkte der Querneigung gebraucht werden.\",\n          param: \"Seite (Rechts); Breite (3,6 m); Vorgabeneigung (-2 %); Querneigung verwenden (Kein); Neigungsrichtung (Vom Dachprofil); M\u00f6glicher Drehpunkt (Ja); Deckschicht Tiefe (0,025); Basis Tiefe (0,100); Untere Tragschicht Tiefe (0,300)\",\n          codes: \"Punkt: Crown, ETW; Verkn\u00fcpfung: Top, Datum, Pave; Profilart: Pave1, Base, SubBase\",\n          tags: \"fahrbahn fahrstreifen spur asphalt belag deckschicht stra\u00dfe fahrspur \u00fcberh\u00f6hung au\u00dfen innen querneigung lane superelevation aor drehpunkt \u00fcberh\u00f6ht kurve\",\n          ziele: \"Fahrspurbreite (optional, Breiten-\/Versatzziel); \u00c4u\u00dfere H\u00f6he (optional, H\u00f6henziel)\", ueberh: true, massen: true,\n          wann: \"Nimm ihn, wenn die Fahrbahn in Kurven sauber \u00fcberh\u00f6ht werden soll: bedient Au\u00dfen- oder Innenfahrspur-\u00dcberh\u00f6hung und als einzige Variante Drehpunkte der Querneigung. F\u00fcr den frei aufgebauten Regelquerschnitt aus dem Kapitel-Tutorial wird stattdessen der AllgemeinerFahrstreifenAufbau genommen.\" },\n        { name: \"Allgemeiner Fahrstreifenaufbau (mehrschichtig)\", en: \"GenericPavementStructure\", kat: \"Fahrbahn\", reiter: \"Basis\", gruppe: G_STD, palette: \"AllgemeinerFahrstreifenAufbau\", form: \"lane\",\n          zweck: \"Vielseitiger Fahrbahnaufbau, der als ein Bestandteil mehrere Schichten (Deck-, Trag-, Frostschutzschicht) \u00fcbereinander baut und sich als Fahrstreifen oder Bankett nutzen l\u00e4sst. Der Bestandteil, mit dem das Kapitel-Tutorial die Fahrbahn aufbaut.\",\n          param: \"Seite (Rechts); Breite (3,6 m); Vorgabequerneigung (-2 %); Tiefe (0,2 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Kantenneigung au\u00dfen (1:1); Breite verschieben (0 m)\",\n          codes: \"Punkt: benutzerdefiniert (z. B. Fahrbahnrand); Verkn\u00fcpfung: Top, Datum; Profilart: benutzerdefiniert\",\n          tags: \"allgemeinerfahrstreifenaufbau allgemeinerfahrspuraufbau genericpavementstructure fahrstreifenaufbau fahrspuraufbau allgemeiner fahrbahnaufbau oberbau schichtaufbau mehrschichtig schichten deckschicht tragschicht frostschutz planum belag basis tutorial regelquerschnitt selbst gebaut universal vielseitig\",\n          ziele: \"Fahrspurbreite (optional, Breiten-\/Versatzziel); \u00c4u\u00dfere H\u00f6he (optional, H\u00f6henziel)\", ueberh: true, massen: true,\n          wann: \"Der flexible Basis-Fahrbahnaufbau (englisch GenericPavementStructure): baut mehrere Schichten in einer Komponente, l\u00e4sst sich stapeln oder nebeneinandersetzen und ist die Wahl des Kapitel-Tutorials. Hinweis: die deutsche Autodesk-Hilfe titelt ihn \u201eAllgemeinerFahrspurAufbau\u201c, die Palette zeigt \u201eAllgemeinerFahrstreifenAufbau\u201c (gleicher Bestandteil, Klasse GenericPavementStructure).\" },\n        { name: \"Fahrstreifen (einfach)\", en: \"BasicLane\", kat: \"Fahrbahn\", reiter: \"Basis\", gruppe: G_STD, palette: \"FahrspurBasis\",\n          zweck: \"Einfache Fahrbahnh\u00e4lfte mit fester Querneigung, ohne \u00dcberh\u00f6hungslogik. F\u00fcr \u00fcberh\u00f6hte Trassen die \u00dcberh\u00f6hungs-Variante nehmen.\",\n          param: \"Seite (Rechts); Breite (3,6 m); Tiefe (0,2 m); %Neigung (-2 %)\",\n          codes: \"Punkt: Crown, ETW; Verkn\u00fcpfung: Top, Datum; Profilart: Pave1\",\n          tags: \"fahrbahn fahrstreifen spur asphalt belag einfach basic lane neigung breite ohne \u00fcberh\u00f6hung\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"F\u00fcr schnelle Entw\u00fcrfe und Schulung: eine Schicht, feste Neigung, keine Ziele. F\u00fcr \u00fcberh\u00f6hte Trassen die \u00dcberh\u00f6hungs-Variante nehmen.\" },\n        { name: \"Fahrstreifen mit \u00dcbergang \/ Verziehung\", en: \"BasicLaneTransition\", kat: \"Fahrbahn\", reiter: \"Basis\", gruppe: G_STD, palette: \"\u00dcbergangsspurBasis\",\n          zweck: \"Fahrstreifen, dessen Breite oder H\u00f6he \u00fcber eine Zielvorgabe variiert (Verbreiterungsachse, Zielh\u00f6he). F\u00fcr Aufweitungen und Anschl\u00fcsse.\",\n          param: \"Seite (Rechts); Einf\u00fcgepunkt (Crown); Breite (3,6 m); Tiefe (0,2 m); %Neigung (-2 %); \u00dcbergang (Versatz und H\u00f6he beibehalten)\",\n          codes: \"Punkt: Crown, ETW; Verkn\u00fcpfung: Top, Datum; Profilart: Pave\",\n          tags: \"fahrbahn fahrstreifen \u00fcbergang verziehung verbreiterung aufweitung transition basic lane ziel anschluss\",\n          ziele: \"Randversatz (optional, Versatzziel); Rand H\u00f6he (optional, H\u00f6henziel)\", ueberh: false, massen: true,\n          wann: \"Wenn der Fahrbahnrand einer Achse oder einem L\u00e4ngsschnitt folgen soll (Verbreiterung\/Verziehung), ohne \u00dcberh\u00f6hungslogik.\" },\n        { name: \"Fahrstreifen, \u00dcberh\u00f6hung au\u00dfen\", en: \"LaneOutsideSuper\", kat: \"Fahrbahn\", reiter: \"nur Katalog-Browser (veraltet)\", gruppe: G_STD, palette: \"Fahrspur\u00dcberh\u00f6hungAu\u00dfen\",\n          zweck: \"Fahrbahnh\u00e4lfte, die die \u00e4u\u00dfere \u00dcberh\u00f6hung um den Drehpunkt bedient. Veraltet: von Autodesk nicht mehr unterst\u00fctzt, nur noch im Katalog-Browser.\",\n          param: \"Seite (Rechts); Einf\u00fcgepunkt (Crown); Breite (3,6 m); Vorgabeneigung (-2 %); Deckschicht\/Zwischenschicht Tiefe (je 0,025); Basis Tiefe (0,100); Untere Tragschicht Tiefe (0,300)\",\n          codes: \"Punkt: Crown, ETW; Verkn\u00fcpfung: Top, Datum; Profilart: Pave1\",\n          tags: \"fahrbahn fahrstreifen \u00fcberh\u00f6hung au\u00dfen outside super lane bogen kurve querneigung\",\n          ziele: \"Breite (optional, Breiten-\/Versatzziel); \u00c4u\u00dfere H\u00f6he (optional, H\u00f6henziel)\", ueberh: true, massen: true,\n          wann: \"Veraltet, ohne Drehpunkt-Unterst\u00fctzung. F\u00fcr neue Querschnitte Fahrspur\u00dcberh\u00f6hungAu\u00dfenoderInnen nehmen.\" },\n        { name: \"Fahrstreifen, \u00dcberh\u00f6hung innen\", en: \"LaneInsideSuper\", kat: \"Fahrbahn\", reiter: \"nur Katalog-Browser (veraltet)\", gruppe: G_STD, palette: \"Fahrspur\u00dcberh\u00f6hungInnen\",\n          zweck: \"Fahrbahnh\u00e4lfte f\u00fcr die bogeninnere Seite, die die innere \u00dcberh\u00f6hung bedient. Veraltet: von Autodesk nicht mehr unterst\u00fctzt, nur noch im Katalog-Browser.\",\n          param: \"Seite (Rechts); Breite (3,6 m); Vorgabe %Neigung (-2 %); Deckschicht\/Zwischenschicht Tiefe (je 0,025); Basis Tiefe (0,100); Untere Tragschicht Tiefe (0,300)\",\n          codes: \"Punkt: Crown, ETW; Verkn\u00fcpfung: Top, Datum; Profilart: Pave1\",\n          tags: \"fahrbahn fahrstreifen \u00fcberh\u00f6hung innen inside super lane bogen kurve querneigung\",\n          ziele: \"Breite (optional, Breiten-\/Versatzziel); \u00c4u\u00dfere H\u00f6he (optional, H\u00f6henziel)\", ueberh: true, massen: true,\n          wann: \"Veraltet, Innenfahrspur-Pendant der alten Generation. F\u00fcr neue Querschnitte Fahrspur\u00dcberh\u00f6hungAu\u00dfenoderInnen nehmen.\" },\n        { name: \"Fahrstreifen mit Verbreiterung (Aufweitung)\", en: \"LaneOutsideSuperWithWidening\", kat: \"Fahrbahn\", reiter: \"Fahrstreifen\", gruppe: G_STD, palette: \"FahrspurAu\u00dfen\u00dcberh\u00f6hungMitAufweitung\",\n          zweck: \"Fahrstreifen mit \u00dcberh\u00f6hung au\u00dfen, dessen Breite \u00fcber eine Verbreiterungs-Zielachse gesteuert wird. F\u00fcr Kurvenaufweitungen.\",\n          param: \"Seite (Rechts); Einf\u00fcgepunkt (Crown); Breite (3,6 m); Vorgabe %Neigung (-2 %); Radstand L\u00e4nge (10 m); Anzahl der Fahrstreifen (1); Deckschicht Tiefe (0,025); Basis Tiefe (0,100); Untere Tragschicht Tiefe (0,300)\",\n          codes: \"Punkt: Crown, ETW; Verkn\u00fcpfung: Top, Datum; Profilart: Pave1\",\n          tags: \"fahrbahn fahrstreifen verbreiterung aufweitung kurve widening outside super lane ziel achse\",\n          ziele: \"Breite (optional, Breiten-\/Versatzziel); \u00c4u\u00dfere H\u00f6he (optional, H\u00f6henziel)\", ueberh: true, massen: true,\n          wann: \"Wie die Au\u00dfen-\u00dcberh\u00f6hungs-Fahrspur, verbreitert den Belag aber auch in \u00fcberh\u00f6hten Bereichen automatisch (Kurvenaufweitung \u00fcber Radstand und Fahrstreifenanzahl).\" },\n        { name: \"Fahrstreifen mit parabolischer W\u00f6lbung\", en: \"LaneParabolic\", kat: \"Fahrbahn\", reiter: \"Fahrstreifen\", gruppe: G_STD, palette: \"FahrspurParabolisch\",\n          zweck: \"Fahrbahn mit parabolisch gew\u00f6lbter Oberfl\u00e4che statt gerader Querneigung. F\u00fcr Dachprofile mit W\u00f6lbung.\",\n          param: \"Dachprofil H\u00f6he (0,10 m); Breite (7,2 m); Deckschicht\/Zwischenschicht Tiefe (je 0,025); Basis Tiefe (0,100); Untere Tragschicht Tiefe (0,300); Anz. Intervalle (8)\",\n          codes: \"Punkt: Crown, ETW; Verkn\u00fcpfung: Top, Datum; Profilart: Pave1\",\n          tags: \"fahrbahn fahrstreifen parabel parabolisch w\u00f6lbung dachprofil lane parabolic\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"F\u00fcr st\u00e4dtische, parabolisch gew\u00f6lbte Fahrbahnen \u00fcber die volle Breite (beide Seiten in einem Bestandteil); keine Querneigung, keine \u00dcberh\u00f6hung.\" },\n        { name: \"Fahrstreifen zur Fahrbahnmitte (Anschluss an Krone)\", en: \"LaneTowardCrown\", kat: \"Fahrbahn\", reiter: \"nur Katalog-Browser (veraltet)\", gruppe: G_STD, palette: \"Fahrspur\u00fcbergangZuFahrspurrand\",\n          zweck: \"Fahrstreifen, der von au\u00dfen zur Fahrbahnkrone hin anschlie\u00dft. Veraltet: von Autodesk als veraltet markiert und nur noch im Katalog-Browser, nicht auf der Default-Palette. F\u00fcr neue Querschnitte den LaneSuperelevationAOR nehmen.\",\n          param: \"Seite (Rechts); Dachprofilpunkt auf Innenseite (Ja); Breite (3,6 m); Deckschicht\/Zwischenschicht Tiefe (je 0,025); Basis Tiefe (0,100); Untere Tragschicht Tiefe (0,300)\",\n          codes: \"Punkt: Crown, ETW; Verkn\u00fcpfung: Top, Datum; Profilart: Pave1\",\n          tags: \"fahrbahn fahrstreifen krone mitte anschluss toward crown lane mehrstreifig veraltet katalog browser deprecated\",\n          ziele: \"Breite (optional, Breiten-\/Versatzziel); Dachprofil-H\u00f6he (optional, H\u00f6henziel)\", ueberh: true, massen: true,\n          wann: \"Veraltet, baut von der Belag-Innenkante zum Dachprofilpunkt hin. F\u00fcr neue Querschnitte Fahrspur\u00dcberh\u00f6hungAu\u00dfenoderInnen nehmen.\" },\n\n        \/\/ ===================== BORDSTEIN UND RINNE (Urban) =====================\n        { name: \"Stadtbord mit Rinne (allgemein)\", en: \"UrbanCurbGutterGeneral\", kat: \"Bordstein und Rinne\", reiter: \"Bordsteine\", gruppe: G_STD, palette: \"StadtBordRinnsteinAllgemein\",\n          zweck: \"Kombinierter Hochbordstein mit Rinne f\u00fcr den st\u00e4dtischen Querschnitt, frei einstellbar \u00fcber viele Ma\u00dfe.\",\n          param: \"Seite (Rechts); Einf\u00fcgepunkt (Rinnsteinkante); Rinnsteinneigung (-2 %); Untere Tragschicht Tiefe (0,450 m); Bema\u00dfung A Rinnsteintiefe (175 mm); Bema\u00dfung B Rinnsteinbreite (400 mm); Bema\u00dfung D Bordsteinh\u00f6he (150 mm)\",\n          codes: \"Punkt: Top_Curb, Back_Curb, Flowline; Verkn\u00fcpfung: Top, Datum; Profilart: Curb\",\n          tags: \"bordstein bord kantstein randstein rinne rinnstein mulde stadt urban curb gutter general hochbord flowline randausbildung\",\n          ziele: \"keine\", ueberh: true, massen: true,\n          wann: \"Der frei bema\u00dfbare Standard-Hochbord mit Rinne (Allzweck-Variante); die Rinnenneigung kann der \u00dcberh\u00f6hung der Au\u00dfenfahrspur folgen.\" },\n        { name: \"Muldenbord \/ Flachrinne (flache Sohle)\", en: \"UrbanCurbGutterValley1\", kat: \"Bordstein und Rinne\", reiter: \"Bordsteine\", gruppe: G_STD, palette: \"StadtBordRinnsteinKehle1\",\n          zweck: \"Flachbord mit flachsohliger Mulde\/Rinne. F\u00fcr flache Entw\u00e4sserungsrinnen an der Fahrbahn.\",\n          param: \"Seite (Rechts); Einf\u00fcgepunkt (Rinnsteinkante); Methode der Rinnsteinneigung (Neigung Fahrspur au\u00dfen); Rinnsteinneigung (-2 %); Untere Tragschicht Tiefe (0,450 m); Bema\u00dfung A Rinnsteintiefe (175 mm); Bema\u00dfung B Rinnsteinbreite (375 mm)\",\n          codes: \"Punkt: Top_Curb, Flowline; Verkn\u00fcpfung: Top, Datum; Profilart: Curb\",\n          tags: \"bordstein flachbord mulde muldenbord rinne flach curb gutter valley entw\u00e4sserung rinnstein kehle kehlrinne\",\n          ziele: \"keine\", ueberh: true, massen: true,\n          wann: \"Die schmalere Kehlrinnen-Variante mit ebener Rinnensohle und w\u00e4hlbarer Neigungsmethode (vom oder zum Dachprofil).\" },\n        { name: \"Muldenbord \/ Flachrinne (geneigte Sohle)\", en: \"UrbanCurbGutterValley2\", kat: \"Bordstein und Rinne\", reiter: \"Bordsteine\", gruppe: G_STD, palette: \"StadtBordRinnsteinKehle2\",\n          zweck: \"Flachbord mit geneigter Muldensohle, etwas tiefere Entw\u00e4sserungsf\u00fchrung als Variante 1.\",\n          param: \"Seite (Rechts); Einf\u00fcgepunkt (Rinnsteinkante); Rinnsteinneigung (-2 %); Untere Tragschicht Tiefe (0,450 m); UntereTragschicht Verl\u00e4ngerung (0,3 m); Bema\u00dfung A Rinnsteintiefe (150 mm); Bema\u00dfung B Rinnsteinbreite (610 mm); Bema\u00dfung F Bordsteinh\u00f6he (300 mm)\",\n          codes: \"Punkt: Top_Curb, Flowline; Verkn\u00fcpfung: Top, Datum; Profilart: Curb\",\n          tags: \"bordstein flachbord mulde muldenbord rinne geneigt curb gutter valley entw\u00e4sserung sohle kehle kehlrinne\",\n          ziele: \"keine\", ueberh: true, massen: true,\n          wann: \"Die breitere Kehlrinnen-Variante (610 mm) mit geneigtem Rinnenboden, sechs Bema\u00dfungsparametern und Tragschicht-Verl\u00e4ngerung.\" },\n        { name: \"Bordstein (einfach)\", en: \"BasicCurb\", kat: \"Bordstein und Rinne\", reiter: \"Basis\", gruppe: G_STD, palette: \"BordsteinBasis\",\n          zweck: \"Einfacher Bordstein als rechteckige Profilart, ohne Rinne. F\u00fcr schematische Querschnitte.\",\n          param: \"Seite (Rechts); Breite (0,225 m); Tiefe (0,45 m); Zuordnungspunkt (Vordere Fl\u00e4che); Tiefe Unten (0,3 m); Abschr\u00e4gung Bordsteinkante (0 Grad)\",\n          codes: \"Punkt: Top_Curb, Back_Curb; Verkn\u00fcpfung: Top, Datum; Profilart: Curb\",\n          tags: \"bordstein kantstein randstein bord einfach basic curb kante rechteck\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Der vereinfachte rechteckige Bordstein ohne Rinne; Anbau wahlweise an vordere oder hintere Fl\u00e4che, optionale Kantenabschr\u00e4gung.\" },\n        { name: \"Bordstein mit Rinne (Basis)\", en: \"BasicCurbAndGutter\", kat: \"Bordstein und Rinne\", reiter: \"Basis\", gruppe: G_STD, palette: \"BordRinnsteinBasis\", form: \"rinne\",\n          zweck: \"Einfacher Bordstein mit angeformter Rinne als ein Basis-Bestandteil, ohne die vielen Ma\u00dfe der Stadtbord-Varianten. Der Bordstein, den das Kapitel-Tutorial an die Fahrbahnkante h\u00e4ngt.\",\n          param: \"Seite (Rechts); Einf\u00fcgepunkt (Rinnsteinkante); Rinnstein Breite (0,5 m); Rinnstein-Neigung (-6 %); Bordstein H\u00f6he (0,225 m); Bordstein Breite (0,15 m); Bordstein Tiefe (0,45 m)\",\n          codes: \"Punkt: Flowline, Top_Curb, Back_Curb; Verkn\u00fcpfung: Top, Datum; Profilart: Curb\",\n          tags: \"bordrinnsteinbasis basiccurbandgutter bordstein rinne rinnstein bord kantstein randstein basis einfach curb gutter tutorial fahrbahnkante hochbord\",\n          ziele: \"keine\", ueberh: true, massen: true,\n          wann: \"Der schlanke Basis-Bordstein mit Rinne (englisch BasicCurbAndGutter), ohne die vielen Ma\u00dfe der Stadtbord-Varianten; im Kapitel-Tutorial die Wahl f\u00fcr die Bordstein- und Rinnenkante an der Fahrbahn.\" },\n\n        \/\/ ===================== GEHWEG UND SEITENRAUM =====================\n        { name: \"Gehweg (einfach)\", en: \"BasicSidewalk\", kat: \"Gehweg und Seitenraum\", reiter: \"Basis\", gruppe: G_STD, palette: \"GehwegBasis\",\n          zweck: \"Einfacher Gehweg als Platte mit Quergef\u00e4lle, hinter dem Bordstein. Definierte Breite und St\u00e4rke.\",\n          param: \"Seite (Rechts); Breite (1,8 m); Tiefe (0,1 m); Puffer Breite 1 innen (0 m); Puffer Breite 2 au\u00dfen (0 m)\",\n          codes: \"Punkt: Sidewalk_In, Sidewalk_Out; Verkn\u00fcpfung: Top, Datum; Profilart: Sidewalk\",\n          tags: \"gehweg fu\u00dfweg gehsteig trottoir seitenraum basic sidewalk platte breite gef\u00e4lle puffer\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Der Schnellstart-Gehweg mit festen Breiten und beidseitigen Gr\u00fcnstreifen-Puffern; f\u00fcr stationsweise variable Breiten den StadtGehweg nehmen.\" },\n        { name: \"Gehweg (Stadt, mit Gr\u00fcnstreifen\/Bankettbreiten)\", en: \"UrbanSidewalk\", kat: \"Gehweg und Seitenraum\", reiter: \"Bordsteine\", gruppe: G_STD, palette: \"StadtGehweg\",\n          zweck: \"Gehweg mit innerem und \u00e4u\u00dferem Gr\u00fcnstreifen (Parkway) f\u00fcr vollst\u00e4ndige st\u00e4dtische Querschnitte.\",\n          param: \"Seite (Rechts); Innen Gr\u00fcnstreifen Breite (0,0 m); Gehweg Breite (1,5 m); Au\u00dfen Gr\u00fcnstreifen Breite (0,0 m); %-Neigung (2 %); Tiefe (0,100 m)\",\n          codes: \"Punkt: Sidewalk_In, Sidewalk_Out; Verkn\u00fcpfung: Top, Datum; Profilart: Sidewalk, Landscape\",\n          tags: \"gehweg fu\u00dfweg gehsteig gr\u00fcnstreifen bankett parkway seitenraum stadt urban sidewalk boulevard\",\n          ziele: \"Innen Gr\u00fcnstreifen Breite (optional); Gehweg Breite (optional); Au\u00dfen Gr\u00fcnstreifen Breite (optional)\", ueberh: false, massen: true,\n          wann: \"Wenn Gehweg- und Gr\u00fcnstreifenbreiten stationsweise \u00fcber Versatz-Ziele gesteuert werden sollen (alle drei Breiten zielbar).\" },\n\n        \/\/ ===================== BANKETT (Shoulders) =====================\n        { name: \"Bankett (einfach, mit Belag und Tragschicht)\", en: \"BasicShoulder\", kat: \"Bankett\", reiter: \"Basis\", gruppe: G_STD, palette: \"BankettBasis\",\n          zweck: \"Befestigtes Bankett am Fahrbahnrand mit eigenem Quergef\u00e4lle. Der \u00dcbergang von der Fahrbahn zur B\u00f6schung.\",\n          param: \"Seite (Rechts); Breite (0,9 m); Tiefe (0,2 m); %Neigung (-4 %)\",\n          codes: \"Punkt: ETW, Shoulder_Break; Verkn\u00fcpfung: Top, Datum; Profilart: Shoulder\",\n          tags: \"bankett schulter randstreifen seitenstreifen basic shoulder breite gef\u00e4lle \u00fcbergang befestigt\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Das einfache befestigte Bankett f\u00fcr den Schnellstart: eine Schicht, feste Neigung, keine Ziele.\" },\n        { name: \"Bankett, alle Schichten bis zur B\u00f6schung verl\u00e4ngert\", en: \"ShoulderExtendAll\", kat: \"Bankett\", reiter: \"Bankette\", gruppe: G_STD, palette: \"BankettVerl\u00e4ngernAlle\",\n          zweck: \"Bankett, bei dem Belag, Trag- und Frostschutzschicht bis zur B\u00f6schungskante durchlaufen.\",\n          param: \"Seite (Rechts); Bankett Breite; \u00dcberh\u00f6hungsneigung verwenden (Nein); Bankett %Neigung (-2 %); B\u00f6schungsfu\u00df-Typ der unteren Tragschicht; Tragschicht \u00fcberh\u00f6hen (Nein)\",\n          codes: \"Punkt: ETW, Shoulder_Break; Verkn\u00fcpfung: Top, Datum; Profilart: Shoulder, Base\",\n          tags: \"bankett schichten verl\u00e4ngert extend all shoulder belag tragschicht frostschutz b\u00f6schung\",\n          ziele: \"Bankett Breite (optional, Breiten-\/Versatzziel)\", ueberh: true, massen: true,\n          wann: \"Wenn alle Schichten (Belag, Tragschicht, untere Tragschicht) bis zum Bankett-Planum durchlaufen sollen.\" },\n        { name: \"Bankett, Frostschutz bis zur B\u00f6schung verl\u00e4ngert\", en: \"ShoulderExtendSubbase\", kat: \"Bankett\", reiter: \"Bankette\", gruppe: G_STD, palette: \"BankettUntereTragschichtVerl\u00e4ngert\",\n          zweck: \"Bankett, bei dem nur die Frostschutzschicht (Subbase) bis zur B\u00f6schung durchl\u00e4uft.\",\n          param: \"Seite (Rechts); Bankett Breite (2,4 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Vorgabebankettneigung (-6 %); Tragschicht - Querneigung verwenden (Bankettneigung au\u00dfen); Untere Tragschicht Tiefe (0,300); Verl\u00e4ngerung je Schicht (0,0)\",\n          codes: \"Punkt: ETW, Shoulder_Break; Verkn\u00fcpfung: Top, Datum; Profilart: SubBase\",\n          tags: \"bankett frostschutz subbase verl\u00e4ngert extend shoulder schotter b\u00f6schung\",\n          ziele: \"Bankett Breite (optional, Breiten-\/Versatzziel)\", ueberh: true, massen: true,\n          wann: \"Wenn nur die untere Tragschicht (Frostschutz) zum B\u00f6schungsfu\u00df hinausl\u00e4uft und die oberen Schichten am Bankettrand enden.\" },\n        { name: \"Bankett mit vertikalem Schichtabschluss\", en: \"ShoulderVerticalSubbase\", kat: \"Bankett\", reiter: \"Bankette\", gruppe: G_STD, palette: \"BankettUntereTragschichtVertikal\",\n          zweck: \"Bankett, dessen Belag- und Frostschutzschicht mit einer senkrechten Kante enden.\",\n          param: \"Seite (Rechts); Befestigt Breite (2,4 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Vorgabeneigung Befestigt (-6 %); Unbefestigt Breite (1,8 m); Unbefestigt %Neigung (-6 %); Untere Tragschicht Tiefe (0,300)\",\n          codes: \"Punkt: ETW, Shoulder_Break; Verkn\u00fcpfung: Top, Datum; Profilart: Shoulder\",\n          tags: \"bankett vertikal senkrecht abschluss shoulder vertical subbase kante\",\n          ziele: \"Befestigt Breite (optional, Breiten-\/Versatzziel); B\u00f6schungsfu\u00df-DGM (bedingt Pflicht, Oberfl\u00e4chenziel)\", ueberh: true, massen: true,\n          wann: \"Wenn Belag und untere Tragschicht senkrecht abschlie\u00dfen sollen (kein Auslauf), mit zus\u00e4tzlichem unbefestigtem Bankettstreifen.\" },\n\n        \/\/ ===================== MITTELSTREIFEN (Medians) =====================\n        { name: \"Mittelstreifen, muldenf\u00f6rmig (vertieft)\", en: \"MedianDepressed\", kat: \"Mittelstreifen\", reiter: \"Mittelstreifen\", gruppe: G_STD, palette: \"MittelstreifenAbgesenkt\",\n          zweck: \"Vertiefter Mittelstreifen (Mulde) zwischen zwei Richtungsfahrbahnen, f\u00fcr Entw\u00e4sserung und Trennung.\",\n          param: \"Markierter Punkt Name; Neigung 1 (-4:1); Neigung 2 (-4:1); Graben Neigungen Beibehalten; Grabenbreite (0,6 m)\",\n          codes: \"Punkt: Median_In, Median_Out; Verkn\u00fcpfung: Top, Datum; Profilart: Median\",\n          tags: \"mittelstreifen median trennstreifen vertieft mulde depressed richtungsfahrbahn autobahn entw\u00e4sserung\",\n          ziele: \"keine (arbeitet mit Markiertem Punkt statt Zielen)\", ueberh: false, massen: false,\n          wann: \"F\u00fcr die abgesenkte Entw\u00e4sserungsmulde zwischen Richtungsfahrbahnen; spannt sich zum zuvor gesetzten Markierten Punkt.\" },\n        { name: \"Mittelstreifen, erh\u00f6ht mit konstanter Neigung\", en: \"MedianRaisedConstantSlope\", kat: \"Mittelstreifen\", reiter: \"Mittelstreifen\", gruppe: G_STD, palette: \"MittelstreifenErh\u00f6htKonstanteNeigung\",\n          zweck: \"Erh\u00f6hter Mittelstreifen mit gleichbleibender Neigung, oft mit Bordeinfassung.\",\n          param: \"Markierter Punkt; Tiefe (0,100 m); die Neigung ergibt sich aus der Geometrie zwischen den beiden Punkten\",\n          codes: \"Punkt: Median_In, Median_Out; Verkn\u00fcpfung: Top, Datum; Profilart: Median, Curb\",\n          tags: \"mittelstreifen median trennstreifen erh\u00f6ht konstant raised constant slope bord\",\n          ziele: \"keine (arbeitet mit Markiertem Punkt)\", ueberh: false, massen: true,\n          wann: \"F\u00fcr den erh\u00f6hten Mittelstreifen mit durchgehender Neigung von Kante zu Kante (kein Hochpunkt in der Mitte).\" },\n        { name: \"Mittelstreifen, niveaugleich (optional Betonschutzwand)\", en: \"MedianFlushWithBarrier\", kat: \"Mittelstreifen\", reiter: \"Mittelstreifen\", gruppe: G_STD, palette: \"MittelstreifenPlanMitBarriere\",\n          zweck: \"Niveaugleicher Mittelstreifen zwischen den Fahrbahnen, optional mit Betonschutzwand (New Jersey).\",\n          param: \"Neigung links\/rechts (-2 %); Mit Betonschutzwand; Breite links\/rechts (1,2 m); Linke\/Rechte Fahrspur - Querneigung verwenden; Deckschicht Tiefe (0,025); Untere Tragschicht Tiefe (0,300)\",\n          codes: \"Punkt: Median_In, Median_Out; Verkn\u00fcpfung: Top, Datum; Profilart: Median, Barrier\",\n          tags: \"mittelstreifen median trennstreifen niveaugleich flush schutzwand jersey barrier betonwand\",\n          ziele: \"Breite links (optional, Breiten-\/Versatzziel); Breite rechts (optional, Breiten-\/Versatzziel)\", ueberh: true, massen: true,\n          wann: \"F\u00fcr den h\u00f6hengleichen Mittelstreifen, wahlweise mit New-Jersey-Betonschutzwand; beide Seiten in einem Bestandteil.\" },\n        { name: \"Erh\u00f6hter Mittelstreifen mit Krone (\u00fcber zwei Punkte)\", en: \"MedianRaisedWithCrown\", kat: \"Mittelstreifen\", reiter: \"Mittelstreifen\", gruppe: G_STD, palette: \"MittelstreifenErh\u00f6htMitDachprofil\",\n          zweck: \"Erh\u00f6hter, in der Mitte gekr\u00f6nter Mittelstreifen, \u00fcber zwei Punkte definiert. Braucht vorher einen Markierungspunkt (MarkPoint) an der Gegenkante als Anschluss.\",\n          param: \"Markierter Punkt; Tiefe (0,100 m); Neigung 1\/2 - Querneigung verwenden (Nein); Neigung 1\/2 Vorgabe (-2 %)\",\n          codes: \"Punkt: Median_In, Median_Out; Verkn\u00fcpfung: Top, Datum; Profilart: Median, Curb\",\n          tags: \"mittelstreifen median trennstreifen erh\u00f6ht krone gekr\u00f6nt zwei punkte markpoint raised with crown bord\",\n          ziele: \"keine (arbeitet mit Markiertem Punkt)\", ueberh: true, massen: true,\n          wann: \"F\u00fcr den erh\u00f6hten Mittelstreifen mit Hochpunkt in der Streifenmitte; beide Flanken getrennt steuerbar.\" },\n\n        \/\/ ===================== B\u00d6SCHUNG UND ANBINDUNG (Daylight, SideSlope, Channel) =====================\n        { name: \"B\u00f6schung mit Einschnittgraben und Anbindung\", en: \"BasicSideSlopeCutDitch\", kat: \"B\u00f6schung und Anbindung\", reiter: \"Basis\", gruppe: G_STD, palette: \"B\u00f6schungEinschnittGrabenBasis\",\n          zweck: \"B\u00f6schungsbestandteil mit integriertem Stra\u00dfengraben f\u00fcr den Einschnitt und der Gel\u00e4ndeanbindung (Daylight-Link). Braucht ein Ziel-DGM.\",\n          param: \"Seite (Rechts); B\u00f6schungsfu\u00dfverkn\u00fcpfung (Einbeziehen); Abtrag (2:1); Auftrag (4:1); Neigung fallend (4:1); Neigung Breite (1,2 m); Unten Breite (0,6 m); Belagmaterial platzieren (Keine)\",\n          codes: \"Punkt: Ditch_In, Ditch_Out, Daylight; Verkn\u00fcpfung: Top, Datum; Profilart: keine\",\n          tags: \"b\u00f6schung gel\u00e4ndeanschluss b\u00f6schungsfu\u00df einschnitt graben mulde daylight anbindung neigung abtrag auftrag hang gel\u00e4nde side slope cut ditch\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht)\", ueberh: false, massen: true,\n          wann: \"Die Einsteiger-B\u00f6schung mit automatischer Abtrag\/Auftrag-Erkennung: im Abtrag optional mit Stra\u00dfenseitengraben, im Auftrag nur der B\u00f6schungsfu\u00df.\" },\n{ name: \"Gel\u00e4ndeanbindung (allgemein, viele Regeln)\", en: \"DaylightGeneral\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungAllgemein\",\n          zweck: \"Reiner Anbindungs-Bestandteil, der von der letzten Kante bis zum Ziel-DGM b\u00f6scht. Viele Regeln f\u00fcr Abtrag, Auftrag, Bermen.\",\n          param: \"Seite (Rechts); Flacher\/Mittlerer\/Steiler Abtrag (6:1 \/ 4:1 \/ 2:1, Max H\u00f6hen 1,5 \/ 3 m); Flacher\/Mittlerer\/Steiler Auftrag (6:1 \/ 4:1 \/ 2:1); Mit Leitplanke (Auslassen); Rundungsoption (Keine); Belagmaterial platzieren (Keine)\",\n          codes: \"Punkt: Daylight, Hinge; Verkn\u00fcpfung: Daylight, Datum; Profilart: keine\",\n          tags: \"gel\u00e4ndeanbindung gel\u00e4ndeanschluss daylight general b\u00f6schung b\u00f6schungsfu\u00df ziel oberfl\u00e4che dgm abtrag auftrag berme anschluss\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht)\", ueberh: false, massen: true,\n          wann: \"Die verallgemeinerte B\u00f6schung mit gestaffelten Neigungen (flach\/mittel\/steil je nach H\u00f6he, bis zu acht Abtragsverkn\u00fcpfungen), optional mit Leitplankenaufweitung.\" },\n        { name: \"Gel\u00e4ndeanbindung (Standard, mit Mutterbodenabtrag)\", en: \"DaylightStandard\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungStandard\",\n          zweck: \"Standard-Anbindung mit Option f\u00fcr Mutterboden-\/Oberbodenabtrag und -auftrag an der B\u00f6schung.\",\n          param: \"Seite (Rechts); Flacher\/Mittlerer\/Steiler Abtrag (6:1 \/ 4:1 \/ 2:1, Max H\u00f6hen 1,5 \/ 3 m); Graben Breite (1 m); Flacher Auftrag (6:1); Mit Leitplanke (Auslassen)\",\n          codes: \"Punkt: Daylight, Hinge; Verkn\u00fcpfung: Daylight, Datum; Profilart: TopsoilCut\",\n          tags: \"gel\u00e4ndeanbindung daylight standard mutterboden oberboden humus b\u00f6schung b\u00f6schungsfu\u00df ziel abtrag auftrag\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht)\", ueberh: false, massen: true,\n          wann: \"Wie B\u00f6schungAllgemein, aber im Abtrag wird zuerst ein Stra\u00dfenseitengraben eingef\u00fcgt und dahinter erst die Abtragsb\u00f6schung.\" },\n        { name: \"Gel\u00e4ndeanbindung mit Bermen (Stufenb\u00f6schung)\", en: \"DaylightBench\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungmitBerme\",\n          zweck: \"B\u00f6schungsanbindung mit Bermen\/Stufen (Abs\u00e4tzen) f\u00fcr hohe B\u00f6schungen. Regelt Bermenbreite und -abstand.\",\n          param: \"Seite (Rechts); Abtrag (2:1); Max Einschnitt H\u00f6he (3,0 m); Auftrag (2:1); Max Damm H\u00f6he (3,0 m); Berme Breite (1,5 m); Berme %-Neigung (2 %)\",\n          codes: \"Punkt: Daylight, Bench; Verkn\u00fcpfung: Daylight, Datum; Profilart: keine\",\n          tags: \"gel\u00e4ndeanbindung daylight berme bench stufe absatz stufenb\u00f6schung hohe b\u00f6schung terrasse\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht)\", ueberh: false, massen: true,\n          wann: \"F\u00fcr hohe B\u00f6schungen: f\u00fcgt bei \u00dcberschreiten der Maximalh\u00f6he automatisch wiederholte Bermen (Abs\u00e4tze) ein, im Abtrag wie im Auftrag.\" },\n        { name: \"Anbindung mit Mindestbreite\", en: \"DaylightMinWidth\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungmitMinBreite\",\n          zweck: \"Anbindung, die eine Mindestbreite bis zum B\u00f6schungsfu\u00df garantiert, auch wenn das Gel\u00e4nde fr\u00fcher getroffen w\u00fcrde.\",\n          param: \"Seite (Rechts); Abtrag (4:1); Auftrag (4:1); Min Breite (3,0 m); Rundungsoption (Keine); Belagmaterial platzieren (Keine)\",\n          codes: \"Punkt: Daylight; Verkn\u00fcpfung: Daylight, Datum; Profilart: keine\",\n          tags: \"gel\u00e4ndeanbindung daylight mindestbreite min width b\u00f6schung platzbedarf\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht); Min Breite (optional, per Versatz-Ziel)\", ueberh: false, massen: true,\n          wann: \"Wenn die B\u00f6schung eine Mindestbreite ab Anschlusspunkt garantieren soll: ein zu naher Fu\u00dfpunkt wird auf die Mindestbreite hinausgeschoben (Neigung wird flacher).\" },\n        { name: \"Anbindung mit Maximalbreite\", en: \"DaylightMaxWidth\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungmitMaxBreite\",\n          zweck: \"Anbindung, deren B\u00f6schung eine Maximalbreite nicht \u00fcberschreitet (Grenzabstand, Grundst\u00fcck).\",\n          param: \"Seite (Rechts); Abtrag (4:1); Auftrag (4:1); Max. Breite (3,0 m); Rundungsoption (Keine); Belagmaterial platzieren (Keine)\",\n          codes: \"Punkt: Daylight; Verkn\u00fcpfung: Daylight, Datum; Profilart: keine\",\n          tags: \"gel\u00e4ndeanbindung daylight maximalbreite max width grenze grundst\u00fcck platzbedarf\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht); Max. Breite (optional, per Versatz-Ziel)\", ueberh: false, massen: true,\n          wann: \"Wenn die B\u00f6schung eine Maximalbreite nicht \u00fcberschreiten darf: der Fu\u00dfpunkt wird auf die Maximalbreite gesetzt, die B\u00f6schung wird dann steiler.\" },\n        { name: \"Anbindung mit Mindestabstand\", en: \"DaylightMinOffset\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungmitMinVersatz\",\n          zweck: \"Anbindung mit garantiertem Mindestabstand des B\u00f6schungsfu\u00dfes von der Achse.\",\n          param: \"Seite (Rechts); Abtrag (4:1); Auftrag (4:1); Min. Versatz von Basislinie (3,0 m); Rundungsoption (Keine)\",\n          codes: \"Punkt: Daylight; Verkn\u00fcpfung: Daylight, Datum; Profilart: keine\",\n          tags: \"gel\u00e4ndeanbindung daylight mindestabstand min offset b\u00f6schungsfu\u00df abstand achse\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht); Min Versatz (optional, per Versatz-Ziel)\", ueberh: false, massen: true,\n          wann: \"Wie Min-Breite, aber gemessen als absoluter Mindestabstand von der Basislinie (Achse) statt als Breite ab Anschlusspunkt.\" },\n        { name: \"Anbindung mit Maximalabstand\", en: \"DaylightMaxOffset\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungmitMaxVersatz\",\n          zweck: \"Anbindung, deren B\u00f6schungsfu\u00df einen Maximalabstand von der Achse nicht \u00fcberschreitet.\",\n          param: \"Seite (Rechts); Abtrag (4:1); Auftrag (4:1); Max. Versatz von Basislinie (3,0 m); Rundungsoption (Keine)\",\n          codes: \"Punkt: Daylight; Verkn\u00fcpfung: Daylight, Datum; Profilart: keine\",\n          tags: \"gel\u00e4ndeanbindung daylight maximalabstand max offset b\u00f6schungsfu\u00df abstand grenze\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht); Max Versatz (optional, per Versatz-Ziel)\", ueberh: false, massen: true,\n          wann: \"Wenn der B\u00f6schungsfu\u00df einen Maximalabstand von der Achse nicht \u00fcberschreiten darf, etwa um im Korridorband zu bleiben (B\u00f6schung wird notfalls steiler).\" },\n        { name: \"Anbindung bis zu festem Abstand\", en: \"DaylightToOffset\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungZuVersatz\",\n          zweck: \"B\u00f6scht bis zu einem definierten horizontalen Abstand und schlie\u00dft dort an das Gel\u00e4nde an.\",\n          param: \"B\u00f6schungsfu\u00df Versatz von Basislinie (3,0 m); Rundungsoption (Keine); Neigungsbeschr\u00e4nkung 1 (1:1); Belagmaterial platzieren (Keine)\",\n          codes: \"Punkt: Daylight; Verkn\u00fcpfung: Daylight, Datum; Profilart: keine\",\n          tags: \"gel\u00e4ndeanbindung daylight fester abstand to offset b\u00f6schung ziel offset\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht); B\u00f6schungsfu\u00df Versatz (optional, per Versatz-Ziel)\", ueberh: false, massen: true,\n          wann: \"Die einzige Variante ganz ohne Neigungsvorgabe: der Fu\u00dfpunkt sitzt immer exakt auf dem vorgegebenen Versatz, die Neigung ergibt sich aus der Geometrie.\" },\n        { name: \"Anbindung an mehrere Ziel-DGM\", en: \"DaylightMultipleSurface\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungmitMehrerenDGMs\",\n          zweck: \"Anbindung, die gegen mehrere gestapelte Ziel-Oberfl\u00e4chen b\u00f6scht (z.B. Fels unter Boden).\",\n          param: \"Seite (Rechts); DGM 1 Abtrag (4:1); DGM 2 Abtrag (2:1); DGM 3 Abtrag (1:1); Bermen zwischen den Schichten (optional); Auftrag (4:1)\",\n          codes: \"Punkt: Daylight; Verkn\u00fcpfung: Daylight, Datum; Profilart: keine\",\n          tags: \"gel\u00e4ndeanbindung daylight mehrere oberfl\u00e4chen multiple surface fels boden schichten ziel\",\n          ziele: \"DGM 1 (Pflicht); DGM 2 (optional); DGM 3 (optional)\", ueberh: false, massen: true,\n          wann: \"F\u00fcr geschichtete Horizonte (Gel\u00e4nde plus Boden-\/Felsschichten): je DGM eine eigene Abtragsneigung, mit optionalen Bermen zwischen den Schichten.\" },\n        { name: \"Anbindung im Fels (steiler Abtrag)\", en: \"DaylightRockCut\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungsfu\u00dfFelsbruch\",\n          zweck: \"Anbindung mit steiler Felsb\u00f6schung im Abtrag und flacherer Bodenb\u00f6schung dar\u00fcber.\",\n          param: \"Seite (Rechts); Abtrag-Neigung (2:1); Auftrag-Neigung (4:1); Grabentiefe (1,2 m); Unten Breite (0,6 m); Felsbruch1 Tiefen-Grenzwerte (3,0 m)\",\n          codes: \"Punkt: Daylight, Rock; Verkn\u00fcpfung: Daylight, Datum; Profilart: keine\",\n          tags: \"gel\u00e4ndeanbindung daylight fels rock cut steil abtrag b\u00f6schung gestein\",\n          ziele: \"Vorhandenes DGM (Pflicht); Fels-DGM (optional)\", ueberh: false, massen: true,\n          wann: \"Wenn unterhalb eines Felshorizonts steilere, gestaffelte Felsbruch-Neigungen gelten sollen; inklusive Grabengeometrie im Abtrag.\" },\n        { name: \"Anbindung innerhalb der Grenze (ROW)\", en: \"DaylightInsideROW\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungsfu\u00dfInnenGrunderwerbsgrenze\",\n          zweck: \"Anbindung, die den B\u00f6schungsfu\u00df innerhalb einer Grundst\u00fccks-\/Baugrenze (Right of Way) h\u00e4lt.\",\n          param: \"Grunderwerbsgrenzen-Versatz von Basislinie (3,0 m); Typischer\/Maximaler Auftrag (4:1 \/ 2:1); Typischer\/Maximaler Abtrag (4:1 \/ 2:1); Neigung beibehalten (Maximale Neigung beibehalten)\",\n          codes: \"Punkt: Daylight; Verkn\u00fcpfung: Daylight, Datum; Profilart: keine\",\n          tags: \"gel\u00e4ndeanbindung daylight grenze row inside grundst\u00fcck baugrenze puffer\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht); Grunderwerbsgrenzen-Versatz (optional, per Versatz-Ziel)\", ueberh: false, massen: true,\n          wann: \"Wenn der B\u00f6schungsfu\u00df innerhalb der Grunderwerbsgrenze bleiben muss: erst Regelneigung, dann Versteilung bis zur Maximalneigung.\" },\n        { name: \"Anbindung als R\u00fcckhaltebecken\", en: \"DaylightBasin\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungmitMulde\",\n          zweck: \"Formt an der B\u00f6schung ein R\u00fcckhalte-\/Versickerungsbecken statt einer einfachen Anbindung.\",\n          param: \"Seite (Rechts); B\u00f6schung fallend (3:1, Breite 1,2 m); Becken Tiefe\/Neigung\/Breite (0,0 \/ 4:1 \/ 1,8 m); Berme Breite (1,8 m); Abtrag (3:1)\",\n          codes: \"Punkt: Daylight, Basin; Verkn\u00fcpfung: Daylight, Datum; Profilart: keine\",\n          tags: \"gel\u00e4ndeanbindung daylight becken basin r\u00fcckhaltebecken versickerung mulde teich\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht); Becken H\u00f6he (optional, per L\u00e4ngsschnitt-Ziel)\", ueberh: false, massen: true,\n          wann: \"Wenn in der B\u00f6schung ein Muldenbecken (Versickerung\/Retention) liegen soll: fallende B\u00f6schung, Beckensohle, Berme, Abschlussb\u00f6schung.\" },\n\n        \/\/ ===================== OBERBAU UND SCHICHTEN =====================\n        { name: \"Mehrschichtiger Fahrstreifen, \u00dcberh\u00f6hung au\u00dfen\", en: \"LaneOutsideSuperMultiLayer\", kat: \"Oberbau und Schichten\", reiter: \"Fahrstreifen\", gruppe: G_STD, palette: \"FahrspurAu\u00dfen\u00dcberh\u00f6htMehrereEbenen\",\n          zweck: \"Fahrstreifen mit vollem Schichtaufbau (Deck-, Binder-, Trag-, Frostschutzschicht) und \u00dcberh\u00f6hung au\u00dfen. Basis f\u00fcr RStO-Oberbau.\",\n          param: \"Seite (Rechts); Einf\u00fcgepunkt (Crown); Breite (3,6 m); Vorgabe %Neigung (-2 %); \u00dcberh\u00f6hungsneigung (Vorgabe); Neigungsrichtung; bis zu 3\u00d7 Deckschicht\/Tragschicht\/untere Tragschicht (0,025\/0,100\/0,300)\",\n          codes: \"Punkt: Crown, ETW; Verkn\u00fcpfung: Top, Datum, je Schicht; Profilart: Pave1, Pave2, Base, SubBase\",\n          tags: \"oberbau schichten schichtaufbau asphalt frostschutz schottertragschicht mehrschichtig fahrstreifen multilayer outside super rsto deckschicht binderschicht allgemeiner fahrbahnaufbau fahrbahnaufbau aufbau universal standard vielseitig\",\n          ziele: \"Breite (optional, Breiten-\/Versatzziel); \u00c4u\u00dfere H\u00f6he (optional, H\u00f6henziel)\", ueberh: true, massen: true,\n          wann: \"F\u00fcr den vollen Schichtaufbau (bis zu 3\u00d73 Schichten), dessen unterste Lage nicht der Oberfl\u00e4chenneigung folgt, sondern eigener Innen-\/Au\u00dfenh\u00f6he.\" },\n        { name: \"Mehrschichtiger Fahrstreifen, \u00dcberh\u00f6hung innen\", en: \"LaneInsideSuperMultiLayer\", kat: \"Oberbau und Schichten\", reiter: \"Fahrstreifen\", gruppe: G_STD, palette: \"FahrspurInnen\u00dcberh\u00f6htMehrereEbenen\",\n          zweck: \"Wie der mehrschichtige Fahrstreifen, aber f\u00fcr die bogeninnere \u00dcberh\u00f6hung.\",\n          param: \"Seite (Rechts); Breite (3,6 m); Vorgabe %Neigung (-2 %); \u00dcberh\u00f6hungsneigung (Vorgabe); bis zu 3\u00d7 Deckschicht\/Tragschicht\/untere Tragschicht (0,025\/0,100\/0,300)\",\n          codes: \"Punkt: Crown, ETW; Verkn\u00fcpfung: Top, Datum, je Schicht; Profilart: Pave1, Pave2, Base, SubBase\",\n          tags: \"oberbau schichten schichtaufbau asphalt frostschutz mehrschichtig fahrstreifen multilayer inside super rsto allgemeiner fahrbahnaufbau fahrbahnaufbau aufbau universal standard vielseitig\",\n          ziele: \"Breite (optional, Breiten-\/Versatzziel); \u00c4u\u00dfere H\u00f6he (optional, H\u00f6henziel)\", ueberh: true, massen: true,\n          wann: \"Innenfahrspur-Variante des Mehrschicht-Aufbaus, f\u00fcr die bogeninnere Seite geteilter Trassen.\" },\n        { name: \"Mehrschichtiger Fahrstreifen mit variabler Schichtbreite\", en: \"LaneOutsideSuperLayerVaryingWidth\", kat: \"Oberbau und Schichten\", reiter: \"Fahrstreifen\", gruppe: G_STD, palette: \"FahrspurAu\u00dfen\u00dcberh\u00f6htEbeneVerschiedeneBreite\",\n          zweck: \"Mehrschichtiger Fahrstreifen, bei dem einzelne Schichten unterschiedlich breit auslaufen (Schichtversatz).\",\n          param: \"Seite (Rechts); Fahrstreifenbreite (3,6 m); Vorgabe %Neigung (-2 %); bis zu 10 benennbare Bel\u00e4ge; je Belag Breitenangabe plus erweiterte Breite innen\/au\u00dfen\",\n          codes: \"Punkt: Crown, ETW; Verkn\u00fcpfung: Top, Datum; Profilart: Pave1, Base, SubBase\",\n          tags: \"oberbau schichten variabel schichtbreite versatz mehrschichtig fahrstreifen layer varying width asphalt frostschutz\",\n          ziele: \"Fahrstreifenbreite (optional, Breiten-\/Versatzziel); \u00c4u\u00dfere H\u00f6he (optional, H\u00f6henziel)\", ueberh: true, massen: true,\n          wann: \"Wenn einzelne Schichten unterschiedlich breit sein m\u00fcssen (z. B. Tragschicht breiter als Deckschicht), mit bis zu 10 benennbaren Bel\u00e4gen.\" },\n        { name: \"Einzelschicht generisch aufbauen (Schicht \u00fcber Verkn\u00fcpfung)\", en: \"LinkWidthAndSlope\", kat: \"Oberbau und Schichten\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussBreiteNeigung\",\n          zweck: \"Derselbe Baustein wie unter \u201eAllgemein und Bausteine\u201c, hier als Schicht-Anwendung: ohne fertigen Oberbau-Bestandteil baust du Schichten (Frostschutz, Schotter) selbst, je Schicht eine Verkn\u00fcpfung mit Breite, Neigung und Profilartcode. Der generische Weg ohne Country Kit.\",\n          param: \"Seite (Links); Breite (3,0 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigung (2:1 bzw. %); Punktcodes (P2); Verkn\u00fcpfungscodes (Oben, Festpunkt)\",\n          codes: \"Punkt\/Verkn\u00fcpfung je nach Anschluss frei benannt; eine geschlossene Schicht\/Fl\u00e4che (Profilart) entsteht erst, wenn mehrere Verkn\u00fcpfungen zu einer Profilart geschlossen werden\",\n          tags: \"oberbau schichten frostschutz schotter schottertragschicht schicht generisch selbst bauen link width and slope planum ohne country kit allgemeiner querschnitt allgemeiner aufbau fahrbahnaufbau aufbau universal flexibel beliebig baustein grundbaustein selbst bauen aus dem man alles macht generisch\",\n          ziele: \"Breite (optional); Neigung (optional)\", ueberh: true, massen: false,\n          wann: \"Wenn du eine einzelne Schicht als freie Verkn\u00fcpfung mit eigenem Profilartcode aufbauen willst, statt einen fertigen Fahrspur-Baustein zu nehmen.\" },\n\n        \/\/ ===================== ALLGEMEIN UND BAUSTEINE (Generic + Conditional) =====================\n        { name: \"Verkn\u00fcpfung: Breite und Neigung\", en: \"LinkWidthAndSlope\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussBreiteNeigung\",\n          zweck: \"Generischer Link \u00fcber feste Breite und Neigung. Der wichtigste Baustein f\u00fcr eigene Querschnitte.\",\n          param: \"Seite (Links); Breite (3,0 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigung (2:1 bzw. %); Punktcodes (P2); Verkn\u00fcpfungscodes (Oben, Festpunkt)\",\n          codes: \"Punkt: frei; Verkn\u00fcpfung: frei\",\n          tags: \"allgemein generisch baustein verkn\u00fcpfung breite neigung link width slope abstand eigen frei code allgemeiner querschnitt allgemeiner aufbau fahrbahnaufbau aufbau universal flexibel beliebig baustein grundbaustein selbst bauen aus dem man alles macht generisch\",\n          ziele: \"Breite (optional); Neigung (optional)\", ueberh: true, massen: false,\n          wann: \"Der Grundbaustein der generischen Familie: feste Breite plus Neigung, beide per Ziel \u00fcberschreibbar.\" },\n        { name: \"Verkn\u00fcpfung: Neigung bis Oberfl\u00e4che (Daylight-Baustein)\", en: \"LinkSlopeToSurface\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussNeigungDGM\",\n          zweck: \"Ein einzelner Link, der mit fester Neigung bis zum Ziel-DGM l\u00e4uft. Der einfachste Gel\u00e4ndeanschluss-Baustein.\",\n          param: \"Seite (Rechts); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigung (2:1 bzw. %); Verkn\u00fcpfung hinzuf\u00fcgen in (Abtrag und Auftrag); Punkt-\/Verkn\u00fcpfungscodes\",\n          codes: \"Punkt: Daylight; Verkn\u00fcpfung: Daylight\",\n          tags: \"allgemein generisch verkn\u00fcpfung neigung oberfl\u00e4che link slope to surface daylight gel\u00e4ndeanschluss b\u00f6schung ziel dgm\",\n          ziele: \"Ziel-DGM (Pflicht)\", ueberh: true, massen: false,\n          wann: \"Der generische Mini-B\u00f6schungsanschluss: l\u00e4uft mit fester Neigung bis zum Ziel-DGM, per Parameter auf Abtrag oder Auftrag beschr\u00e4nkbar.\" },\n        { name: \"Verkn\u00fcpfung: Abstand und Neigung\", en: \"LinkOffsetAndSlope\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussVersatzNeigung\",\n          zweck: \"Link, der um einen horizontalen Abstand versetzt mit fester Neigung anschlie\u00dft.\",\n          param: \"Versatz von Basislinie (10 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigung (2:1 bzw. %); Punkt-\/Verkn\u00fcpfungscodes\",\n          codes: \"Punkt: frei; Verkn\u00fcpfung: frei\",\n          tags: \"allgemein generisch verkn\u00fcpfung abstand offset neigung link offset and slope baustein\",\n          ziele: \"Versatz (optional); Neigung (optional)\", ueberh: true, massen: false,\n          wann: \"Wenn die Verkn\u00fcpfung an einem absoluten Versatz zur Basislinie enden soll (H\u00f6he ergibt sich aus der Neigung).\" },\n        { name: \"Verkn\u00fcpfung: Abstand und H\u00f6he\", en: \"LinkOffsetAndElevation\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussVersatzH\u00f6he\",\n          zweck: \"Link, der zu einem Punkt aus Abstand und absoluter H\u00f6he f\u00fchrt.\",\n          param: \"Versatz von Basislinie (3 m); H\u00f6he (0,0); Punkt-\/Verkn\u00fcpfungscodes\",\n          codes: \"Punkt: frei; Verkn\u00fcpfung: frei\",\n          tags: \"allgemein generisch verkn\u00fcpfung abstand h\u00f6he offset elevation link baustein zielpunkt\",\n          ziele: \"Versatz (optional); H\u00f6he (optional)\", ueberh: false, massen: false,\n          wann: \"Wenn Endversatz UND Endh\u00f6he absolut vorgegeben sind (beide per Achse\/L\u00e4ngsschnitt steuerbar), ganz ohne Neigungseingabe.\" },\n        { name: \"Verkn\u00fcpfung: Abstand entlang Oberfl\u00e4che\", en: \"LinkOffsetOnSurface\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussVersatzAufDGM\",\n          zweck: \"Link, der einen Punkt in festem Abstand direkt auf dem Ziel-DGM absetzt (folgt dem Gel\u00e4nde).\",\n          param: \"Versatz von Basislinie (0,0); Punkt-\/Verkn\u00fcpfungscodes\",\n          codes: \"Punkt: frei; Verkn\u00fcpfung: frei\",\n          tags: \"allgemein generisch verkn\u00fcpfung abstand oberfl\u00e4che offset on surface gel\u00e4nde dgm baustein\",\n          ziele: \"Ziel-DGM (Pflicht); Versatz (optional)\", ueberh: false, massen: false,\n          wann: \"Wenn der Endpunkt auf dem Ziel-DGM liegen soll: die H\u00f6he kommt vom DGM am angegebenen Versatz.\" },\n        { name: \"Verkn\u00fcpfung: Neigung bis Zielh\u00f6he\", en: \"LinkSlopeToElevation\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussNeigungH\u00f6he\",\n          zweck: \"Link, der mit fester Neigung bis zu einer Zielh\u00f6he l\u00e4uft.\",\n          param: \"Seite (Rechts); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigung (2:1 bzw. %); Ziel H\u00f6he (0,0); Punkt-\/Verkn\u00fcpfungscodes\",\n          codes: \"Punkt: frei; Verkn\u00fcpfung: frei\",\n          tags: \"allgemein generisch verkn\u00fcpfung neigung zielh\u00f6he link slope to elevation baustein\",\n          ziele: \"Ziel H\u00f6he (optional, alternativ Ziel-L\u00e4ngsschnitt)\", ueberh: true, massen: false,\n          wann: \"Wenn eine feste Neigung bis zu einer Zielh\u00f6he laufen soll; das Vorzeichen richtet sich automatisch nach Lage des Ziels.\" },\n        { name: \"Verkn\u00fcpfung: Neigungen zwischen Punkten\", en: \"LinkSlopesBetweenPoints\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussNeigungenZwischenPunkten\",\n          zweck: \"Verbindet zwei bestehende Punkte mit einer geknickten Verkn\u00fcpfung \u00fcber eine Zwischenneigung.\",\n          param: \"Markierter Punkt Name; Neigung 1 (-4:1); Neigung 2 (-4:1); Graben Breite (0,6 m)\",\n          codes: \"Punkt: frei; Verkn\u00fcpfung: frei\",\n          tags: \"allgemein generisch verkn\u00fcpfung neigungen zwischen punkten link slopes between points baustein\",\n          ziele: \"keine (arbeitet mit Markiertem Punkt)\", ueberh: false, massen: false,\n          wann: \"F\u00fcr den V-Graben (optional mit ebener Sohle) zwischen dem Anschlusspunkt und einem zuvor gesetzten Markierten Punkt, etwa zwischen zwei Fahrbahnen.\" },\n        { name: \"Verkn\u00fcpfung: Neigung mit vertikalem Versatz\", en: \"LinkSlopeAndVerticalDeflection\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussNeigungUndVertAbschr\u00e4gung\",\n          zweck: \"Link mit fester Neigung plus zus\u00e4tzlichem vertikalen Versatz am Ende.\",\n          param: \"Seite (Rechts); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigung (2:1 bzw. %); Vertikale Abschr\u00e4gung (3 m); Punkt-\/Verkn\u00fcpfungscodes\",\n          codes: \"Punkt: frei; Verkn\u00fcpfung: frei\",\n          tags: \"allgemein generisch verkn\u00fcpfung neigung vertikal versatz link slope vertical deflection baustein\",\n          ziele: \"Vertikale Abschr\u00e4gung (optional, per L\u00e4ngsschnitt)\", ueberh: true, massen: false,\n          wann: \"Wenn eine feste Neigung bis zu einem H\u00f6henunterschied relativ zum Anschlusspunkt laufen soll (nicht bis zu einer absoluten H\u00f6he).\" },\n        { name: \"Verkn\u00fcpfung: senkrecht (vertikal)\", en: \"LinkVertical\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussVertikal\",\n          zweck: \"Reiner senkrechter Link (z.B. f\u00fcr Bordkanten, Schichtabschl\u00fcsse, W\u00e4nde).\",\n          param: \"Vertikale Abschr\u00e4gung (3 m); Punkt-\/Verkn\u00fcpfungscodes\",\n          codes: \"Punkt: frei; Verkn\u00fcpfung: frei\",\n          tags: \"allgemein generisch verkn\u00fcpfung senkrecht vertikal link vertical kante wand baustein\",\n          ziele: \"Vertikale Abschr\u00e4gung (optional, per L\u00e4ngsschnitt)\", ueberh: false, massen: false,\n          wann: \"F\u00fcr die rein senkrechte Verkn\u00fcpfung ohne horizontale Komponente, etwa als Schichtabschluss oder Wandkante.\" },\n        { name: \"Verkn\u00fcpfung: Mehrfach-Polylinie\", en: \"LinkMulti\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussMulti\",\n          zweck: \"Ein Link aus mehreren Segmenten (Polylinie) \u00fcber Abstand-\/Neigungs- oder Delta-Werte.\",\n          param: \"Seite (Rechts); Anz. der Verkn\u00fcpfungen; je Verkn\u00fcpfung ein Breiten-\/H\u00f6hendelta (dW\/dZ, bis zu 12); Punkt-\/Verkn\u00fcpfungs-\/Profilartcodes\",\n          codes: \"Punkt: frei; Verkn\u00fcpfung: frei\",\n          tags: \"allgemein generisch verkn\u00fcpfung mehrfach polylinie link multi segmente baustein\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Der Selbstbau-Baustein: bis zu 12 Verkn\u00fcpfungen als freie Kontur in einem Bestandteil, bei Bedarf mehrfach hintereinander.\" },\n        { name: \"Anschluss an Markierungspunkt\", en: \"LinkToMarkedPoint\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"AnschlussMarkierterPunkt\",\n          zweck: \"Zieht eine Verkn\u00fcpfung von der aktuellen Kante zu einem zuvor gesetzten Markierungspunkt. Verbindet getrennte Bestandteile gezielt.\",\n          param: \"Markierter Punkt Name; Verkn\u00fcpfungscodes; Ohne Verkn\u00fcpfung (Nein)\",\n          codes: \"Verkn\u00fcpfung: frei benannt\",\n          tags: \"allgemein generisch marker markierungspunkt anschluss link to marked point verbinden gezielt baustein\",\n          ziele: \"keine (arbeitet mit Markiertem Punkt)\", ueberh: false, massen: false,\n          wann: \"Wenn eine gerade Verkn\u00fcpfung einen zuvor per MarkierterPunkt benannten Punkt schlie\u00dfen soll, etwa \u00fcber einen Mittelstreifen.\" },\n        { name: \"Anschluss an Fahrbahnmarkierung\", en: \"LinkToLaneMarker\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"Verkn\u00fcpfen mit Fahrspurmarker\",\n          zweck: \"Verkn\u00fcpfung, die an eine markierte Fahrbahnkante (Lane Marker) anschlie\u00dft. F\u00fcr abh\u00e4ngige Streifen.\",\n          param: \"Fahrspurbreite (1,8 m); Fahrspurmarkerposition (50 %); Neigung (-2 %); Einf\u00fcgungsseite (Innen); vorgabem\u00e4\u00dfig ohne sichtbare Verkn\u00fcpfung\",\n          codes: \"Verkn\u00fcpfung: frei benannt\",\n          tags: \"allgemein generisch marker fahrbahnmarkierung lane marker anschluss link to lane marker baustein\",\n          ziele: \"keine\", ueberh: false, massen: false,\n          wann: \"Wenn ein benannter Punkt prozentual auf einer Fahrspurbreite sitzen soll, etwa f\u00fcr Markierungslinien-Beschriftung.\" },\n        { name: \"Markierungspunkt setzen (codierter Punkt)\", en: \"MarkPoint\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"MarkierterPunkt\",\n          zweck: \"Setzt bewusst einen codierten Punkt an eine definierte Stelle, den sp\u00e4tere Bestandteile, Elementkanten oder Beschriftungen greifen.\",\n          param: \"Punkt Name (Pflichtangabe); Punkt Codes (MarkierterPunkt)\",\n          codes: \"Punkt: frei benannt (z.B. Marker_1)\",\n          tags: \"allgemein generisch marker markierungspunkt mark point codierter punkt setzen elementkante greifen baustein\",\n          ziele: \"keine\", ueberh: false, massen: false,\n          wann: \"Wenn ein Punkt nur benannt werden soll, damit sp\u00e4tere Bestandteile (AnschlussMarkierterPunkt, Neigungen zwischen Punkten) ihn greifen.\" },\n        { name: \"Grundst\u00fccksgef\u00e4lle (Baufeld)\", en: \"LotGrade\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"ParzelleNeigung(prozentual)\",\n          zweck: \"Modelliert das Gef\u00e4lle einer Grundst\u00fccks-\/Baufeldfl\u00e4che vom Rand zum Anschlusspunkt.\",\n          param: \"Seite (Rechts); Innere Breite (3,6 m); \u00c4u\u00dfere Breite (3,6 m); Min. Neigung (1 %)\",\n          codes: \"Punkt: frei; Verkn\u00fcpfung: frei\",\n          tags: \"allgemein generisch grundst\u00fcck baufeld gef\u00e4lle lot grade fl\u00e4che pad baustein\",\n          ziele: \"Rand H\u00f6he (Pflicht); Mittlerer Versatz (optional); Randversatz (optional)\", ueberh: false, massen: false,\n          wann: \"F\u00fcr die Grundst\u00fccks-Planie ab der Grunderwerbslinie (zwei H\u00e4lften zur Parzellenmitte, Mindestneigung 1 Prozent).\" },\n        { name: \"Bedingter Auf- oder Abtrag\", en: \"ConditionalCutOrFill\", kat: \"Allgemein und Bausteine\", reiter: \"Bedingt\", gruppe: G_STD, palette: \"BedingterAbtragOderAuftrag\",\n          zweck: \"Bedingungs-Bestandteil, der je nach Lage des Ziel-DGM entweder den Abtrags- oder den Auftrags-Ast ausl\u00f6st. Steuert, welcher B\u00f6schungszweig gebaut wird.\",\n          param: \"Seite (Rechts); Layoutbreite (3,6 m); Layoutneigung (1:1); Typ (Abtrag); Mindestabstand (0); H\u00f6chstabstand (9999)\",\n          codes: \"keine eigenen Codes; steuert Folgebestandteile\",\n          tags: \"allgemein bedingt bedingung conditional cut or fill auf abtrag entscheidung b\u00f6schung ziel zweig ast\",\n          ziele: \"DGM (Pflicht, entscheidet Abtrag\/Auftrag)\", ueberh: false, massen: false,\n          wann: \"Wenn der Querschnitt je nach Abtrag- oder Auftragslage verzweigen soll (mit Tiefenfenster \u00fcber Mindest-\/H\u00f6chstabstand).\" },\n        { name: \"Bedingtes horizontales Ziel\", en: \"ConditionalHorizontalTarget\", kat: \"Allgemein und Bausteine\", reiter: \"Bedingt\", gruppe: G_STD, palette: \"BedingtHorizontalZiel\",\n          zweck: \"Pr\u00fcft, ob ein horizontales Ziel (Achse\/Elementkante) in Reichweite ist, und schaltet den passenden Folgebestandteil.\",\n          param: \"Seite (Rechts); Layoutbreite (3,6 m); Layoutneigung (1:1); Bedingung (Gefunden); H\u00f6chstabstand (9999)\",\n          codes: \"keine eigenen Codes; steuert Folgebestandteile\",\n          tags: \"allgemein bedingt bedingung conditional horizontal target ziel achse elementkante entscheidung\",\n          ziele: \"Versatzziel (f\u00fcr den Gefunden-Zweig Pflicht; formal optional)\", ueberh: false, massen: false,\n          wann: \"Wenn der Querschnitt danach verzweigen soll, ob an der Station ein Versatzziel (Achse, Elementkante, Polylinie) existiert.\" },\n\n        \/\/ ===================== COUNTRY KIT DEUTSCHLAND (RStO) =====================\n        { name: \"Oberbau au\u00dferorts (RStO 12\/24)\", en: \"Country-Kit-spezifisch (PKT)\", kat: \"Country Kit (RStO)\", reiter: \"DE_RStO_12\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Fertiger Schichtaufbau nach RStO f\u00fcr au\u00dferorts (Deck-, Binder-, Trag-, Frostschutzschicht mit Planum-Knickpunkt).\", alt: \"generisch mit mehrschichtigem Fahrstreifen oder gestapelten LinkWidthAndSlope nachbauen\",\n          param: \"Bauklasse (Bk), Schichtdicken nach RStO, Planumneigung\",\n          codes: \"je Schicht ein Profilartcode (Deck\/Binder\/Trag\/Frostschutz), Verkn\u00fcpfung: Planum\",\n          tags: \"country kit rsto oberbau au\u00dferorts schichtaufbau asphalt frostschutz schottertragschicht planum bauklasse bk deutschland dach deckschicht binderschicht\" },\n        { name: \"Oberbau innerorts (RStO 12\/24)\", en: \"Country-Kit-spezifisch (PKT)\", kat: \"Country Kit (RStO)\", reiter: \"DE_RStO_12\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Fertiger RStO-Schichtaufbau f\u00fcr innerorts, meist mit anderen Schichtdicken und Bordanschluss.\", alt: \"generisch mit mehrschichtigem Fahrstreifen oder gestapelten LinkWidthAndSlope nachbauen\",\n          param: \"Bauklasse (Bk), Schichtdicken nach RStO, Planumneigung\",\n          codes: \"je Schicht ein Profilartcode, Verkn\u00fcpfung: Planum\",\n          tags: \"country kit rsto oberbau innerorts schichtaufbau asphalt frostschutz planum bauklasse deutschland dach stadt\" },\n        { name: \"Ungebundene Tragschicht (Frostschutz- bzw. Schottertragschicht)\", en: \"Country-Kit-spezifisch (PKT)\", kat: \"Country Kit (RStO)\", reiter: \"DE_RStO_12\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Ungebundene Tragschicht (Frostschutzschicht bzw. Schottertragschicht sind zwei verschiedene RStO-Schichten) als eigener Country-Kit-Bestandteil mit Planum.\", alt: \"generisch als LinkWidthAndSlope mit eigenem Profilartcode aufbauen\",\n          param: \"Dicke, Breite, Neigung, Planumausbildung\",\n          codes: \"Profilart: Frostschutz\/Schotter; Verkn\u00fcpfung: Planum\",\n          tags: \"country kit rsto frostschutz frostschutzschicht schotter schottertragschicht ungebunden planum tragschicht deutschland dach\" },\n        { name: \"Hochbord (Randbefestigung)\", en: \"Country-Kit-spezifisch (PKT)\", kat: \"Country Kit (RStO)\", reiter: \"DE_Fahrbahnrand\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Deutscher Hochbordstein als Randbefestigung nach Regelwerk, mit R\u00fcckenst\u00fctze und Fundament.\", alt: \"generisch mit Stadtbord (UrbanCurbGutterGeneral) ann\u00e4hern\",\n          param: \"Bordtyp, Ansichtsh\u00f6he, Breite, Fundamentma\u00dfe\",\n          codes: \"Punkt: Top_Curb, Back_Curb; Profilart: Bord\/Beton\",\n          tags: \"country kit rsto hochbord bordstein kantstein randstein randbefestigung r\u00fcckenst\u00fctze fundament deutschland dach din\" },\n        { name: \"Rundbord\", en: \"Country-Kit-spezifisch (PKT)\", kat: \"Country Kit (RStO)\", reiter: \"DE_Fahrbahnrand\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Rundbord (abgerundeter Bordstein) als deutscher Randstein-Bestandteil.\", alt: \"generisch mit Bordstein (BasicCurb) ann\u00e4hern\",\n          param: \"Ansichtsh\u00f6he, Breite, Rundung, Fundament\",\n          codes: \"Punkt: Top_Curb, Back_Curb; Profilart: Bord\",\n          tags: \"country kit rsto rundbord bordstein kantstein randstein abgerundet deutschland dach din\" },\n        { name: \"Tiefbord \/ Flachbord\", en: \"Country-Kit-spezifisch (PKT)\", kat: \"Country Kit (RStO)\", reiter: \"DE_Fahrbahnrand\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Niedriger Tief-\/Flachbord als Randeinfassung, oft an Gr\u00fcnfl\u00e4chen und Parkstreifen.\", alt: \"generisch mit Bordstein (BasicCurb) ann\u00e4hern\",\n          param: \"Ansichtsh\u00f6he, Breite, Fundament\",\n          codes: \"Punkt: Top_Curb, Back_Curb; Profilart: Bord\",\n          tags: \"country kit rsto tiefbord flachbord bordstein kantstein randstein niedrig einfassung deutschland dach\" },\n        { name: \"Muldenrinne \/ Mulde\", en: \"Country-Kit-spezifisch (PKT)\", kat: \"Country Kit (RStO)\", reiter: \"DE_Fahrbahnrand\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Muldenrinne\/Entw\u00e4sserungsmulde als deutscher Rinnen-Bestandteil.\", alt: \"generisch mit Muldenbord (UrbanCurbGutterValley) ann\u00e4hern\",\n          param: \"Muldenbreite, -tiefe, Sohlausbildung, Neigungen\",\n          codes: \"Punkt: Flowline; Profilart: Rinne\/Beton\",\n          tags: \"country kit rsto muldenrinne mulde rinne rinnstein entw\u00e4sserung sohle deutschland dach\" },\n        { name: \"Kasten- \/ Pendelrinne\", en: \"Country-Kit-spezifisch (PKT)\", kat: \"Country Kit (RStO)\", reiter: \"DE_Fahrbahnrand\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Kasten- oder Pendelrinne als vorgefertigter Rinnen-Bestandteil f\u00fcr die Fahrbahnentw\u00e4sserung.\", alt: \"generisch aus LinkVertical und LinkWidthAndSlope zusammensetzen\",\n          param: \"Rinnenbreite, -tiefe, Wandst\u00e4rken, Neigung\",\n          codes: \"Punkt: Flowline; Profilart: Rinne\/Beton\",\n          tags: \"country kit rsto kastenrinne pendelrinne rinne rinnstein entw\u00e4sserung fahrbahn deutschland dach\" },\n        { name: \"Pflasterrinne\", en: \"Country-Kit-spezifisch (PKT)\", kat: \"Country Kit (RStO)\", reiter: \"DE_Fahrbahnrand\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Gepflasterte Rinne (Pflasterrinne) entlang der Fahrbahn oder im Seitenraum.\", alt: \"generisch mit Muldenbord oder LinkWidthAndSlope ann\u00e4hern\",\n          param: \"Rinnenbreite, Steinreihen, Neigung, Sohle\",\n          codes: \"Punkt: Flowline; Profilart: Rinne\/Pflaster\",\n          tags: \"country kit rsto pflasterrinne rinne pflaster naturstein entw\u00e4sserung seitenraum deutschland dach\" },\n        { name: \"Bankettbefestigung (RStO)\", en: \"Country-Kit-spezifisch (PKT)\", kat: \"Country Kit (RStO)\", reiter: \"DE_Fahrbahnrand\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Befestigtes Bankett nach deutschem Regelwerk mit definierter Breite und Aufbau.\", alt: \"generisch mit Bankett (BasicShoulder) ann\u00e4hern\",\n          param: \"Bankettbreite, Neigung, Befestigungsart, St\u00e4rke\",\n          codes: \"Punkt: Shoulder_Break; Profilart: Bankett\",\n          tags: \"country kit rsto bankett bankettbefestigung randstreifen seitenstreifen befestigt deutschland dach\" },\n        { name: \"Schrammbord \/ Randbalken\", en: \"Country-Kit-spezifisch (PKT)\", kat: \"Country Kit (RStO)\", reiter: \"DE_Fahrbahnrand\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Schrammbord\/Randbalken als Randeinfassung, z.B. an Br\u00fccken und St\u00fctzw\u00e4nden.\", alt: \"generisch aus LinkVertical und LinkWidthAndSlope zusammensetzen\",\n          param: \"H\u00f6he, Breite, Anlauf, Fundament\",\n          codes: \"Punkt: Top_Curb, Back_Curb; Profilart: Bord\/Beton\",\n          tags: \"country kit rsto schrammbord randbalken bord kante br\u00fccke st\u00fctzwand einfassung deutschland dach\" },\n        { name: \"Regelquerschnitt RQ (fertiger Querschnitt)\", en: \"Country-Kit-spezifisch (Assembly)\", kat: \"Country Kit (RStO)\", reiter: \"DE_RAL_2012\", gruppe: G_CC, cc: true, palette: \"am installierten Country Kit ablesen\",\n          zweck: \"Ein kompletter, vorgefertigter Regelquerschnitt (z.B. RQ 9,5 oder RQ 11, je nach Regelwerk RAS-Q bzw. RAL) als fertiger Querschnitt statt einzelner Bestandteile.\", alt: \"aus Standard-Bestandteilen selbst zusammensetzen und spiegeln (siehe Werkstatt-Tool)\",\n          param: \"RQ-Typ, Fahrbahnbreiten, Bankett, B\u00f6schung, Oberbau\",\n          codes: \"vollst\u00e4ndiger Codesatz je Bestandteil bereits vergeben\",\n          tags: \"country kit rsto regelquerschnitt rq rq9,5 rq11 fertig komplett querschnitt vorlage muster deutschland dach ras-q\" },\n        { name: \"Hohlkasten-Br\u00fcckentr\u00e4ger (einzellig)\", en: \"BridgeBoxGirder1\", dom: \"Br\u00fccke\", kat: \"Br\u00fccke\", reiter: \"Br\u00fccke\", gruppe: G_STD, form: \"bridge\",\n          palette: \"Tr\u00e4gerbr\u00fccke1\",\n          zweck: \"Einfacher, einzelliger Hohlkasten-Br\u00fcckenquerschnitt mit optionalen Halb-Schutzw\u00e4nden, f\u00fcr Visualisierung, nicht f\u00fcr Tragwerksbemessung.\",\n          param: \"Breite links\/rechts (je 5,34 m); Links\/Rechts - Querneigung verwenden (Neigung Fahrspur au\u00dfen); Vorgabeneigung (-2 %); Untersicht Tiefe (2,0 m); Rand Tiefe (0,15 m); \u00dcberhang Breite (1,2 m)\",\n          codes: \"Punkt: EBD, Crown_Deck; Verkn\u00fcpfung: Deck, Top, Bridge, Barrier; Profilart: Bridge, Barrier\",\n          tags: \"bruecke bridge hohlkasten box girder br\u00fcckendeck \u00fcberf\u00fchrung viadukt tragwerk deck kasten einzellig\",\n          ziele: \"Breite links (optional); Breite rechts (optional)\", ueberh: true, massen: true,\n          wann: \"F\u00fcr den einzelligen Br\u00fccken-Hohlkasten mit optionalen Halb-Schutzw\u00e4nden; nur zur Visualisierung, keine Tragwerksbemessung.\" },\n        { name: \"Hohlkasten-Br\u00fcckentr\u00e4ger (zweizellig)\", en: \"BridgeBoxGirder2\", dom: \"Br\u00fccke\", kat: \"Br\u00fccke\", reiter: \"Br\u00fccke\", gruppe: G_STD, form: \"bridge\",\n          palette: \"Tr\u00e4gerbr\u00fccke2\",\n          zweck: \"Zweizelliger Hohlkasten-Br\u00fcckenquerschnitt mit optionalen Halb-Schutzw\u00e4nden, nur zur Visualisierung.\",\n          param: \"Breite linke\/rechte Fahrspur (je 5,34 m); Tafelneigung - Querneigung verwenden (Nein); Mit Betonschutzw\u00e4nden (Einbeziehen); Bema\u00dfung A-E (Tafelst\u00e4rke bis Ansatzbreite); Betonschutzwand-Ma\u00dfe\",\n          codes: \"Punkt: EBD, Crown_Deck; Verkn\u00fcpfung: Deck, Top, Bridge, Barrier; Profilart: Bridge, Barrier\",\n          tags: \"bruecke bridge hohlkasten box girder zweizellig zwei kammer br\u00fcckendeck viadukt tragwerk\",\n          ziele: \"Breite links (optional); Breite rechts (optional)\", ueberh: true, massen: true,\n          wann: \"F\u00fcr den zweizelligen Hohlkasten mit detaillierter Bema\u00dfungs-Parametrik; ebenfalls nur zur Visualisierung.\" },\n        { name: \"Betonschutzwand (New Jersey, zweiseitig)\", en: \"BasicBarrier\", dom: \"Br\u00fccke\", kat: \"Br\u00fccke\", reiter: \"Basis\", gruppe: G_STD, form: \"wall\",\n          palette: \"BetonschutzwandBasis\",\n          zweck: \"Zweiseitige New-Jersey-Betonschutzwand auf der Fahrbahnoberfl\u00e4che.\",\n          param: \"Breite Oben (0,15 m); Breite Mitte (0,225 m); Unten Breite (0,6 m); H\u00f6he Oben (0,9 m); H\u00f6he Mitte (0,45 m); Bordstein H\u00f6he (0,075 m)\",\n          codes: \"zugewiesene Codes am Kit pr\u00fcfen\",\n          tags: \"bruecke schutzwand betonschutzwand new jersey barrier leitwand fahrbahntrennung schutzeinrichtung mittelstreifen\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"F\u00fcr die frei parametrisierbare, zweiseitige New-Jersey-Betonschutzwand (Basis zentriert \u00fcber dem Anschlusspunkt).\" },\n        { name: \"Leitplanke (einfach)\", en: \"BasicGuardrail\", dom: \"Br\u00fccke\", kat: \"Br\u00fccke\", reiter: \"Basis\", gruppe: G_STD, form: \"linie\",\n          palette: \"LeitplankeBasis\",\n          zweck: \"Einfache Leitplanken-Form auf der Querschnittsgruppe.\",\n          param: \"Seite (Rechts) - die Bema\u00dfungen sind fest und nicht \u00e4nderbar\",\n          codes: \"zugewiesene Codes am Kit pr\u00fcfen\",\n          tags: \"bruecke leitplanke schutzplanke guardrail leitschiene schutzeinrichtung r\u00fcckhaltesystem\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"F\u00fcr die schnelle Leitplanken-Silhouette; nur die Seite ist w\u00e4hlbar, alle Ma\u00dfe sind fix.\" },\n        { name: \"L\u00e4rmschutzwand (einfach)\", en: \"SimpleNoiseBarrier\", dom: \"Br\u00fccke\", kat: \"Br\u00fccke\", reiter: \"Basis\", gruppe: G_STD, form: \"wall\",\n          palette: \"EinfacherL\u00e4rmschutzwall\",\n          zweck: \"L\u00e4rmschutzwand, optional mit Oberboden-Material.\",\n          param: \"Seite (Rechts); Breite Oben (1,0 m); B\u00f6schung (1:1,5); B\u00f6schung steigend (1:1,5); H\u00f6he (3,0 m); Mutterbodenst\u00e4rke (0,0)\",\n          codes: \"zugewiesene Codes am Kit pr\u00fcfen\",\n          tags: \"bruecke laermschutzwand schallschutz noise barrier wand schutzeinrichtung\",\n          ziele: \"Ziel-DGM (optional)\", ueberh: false, massen: true,\n          wann: \"F\u00fcr den L\u00e4rmschutz-Erdwall (keine Wand): B\u00f6schungen frei w\u00e4hlbar, bei Breite Oben 0 dreieckig, optional mit Mutterboden-Andeckung.\" },\n        { name: \"Einzelgleis (einfach, Schotteroberbau)\", en: \"RailSingle\", dom: \"Schiene\", kat: \"Schiene\", reiter: \"Schiene\", gruppe: G_STD, form: \"rail\",\n          palette: \"SchieneEinzeln\",\n          zweck: \"Schienen, Schwelle, Schotter und Unterschotter f\u00fcr ein eingleisiges Gleis; f\u00fcr Visualisierung\/Korridor-Demo.\",\n          param: \"Schiene %Neigung (0 %); Spur Breite (1,435 m); Schwelle Breite (2,4 m); Schwelle H\u00f6he (0,2 m); Gleisschotter Breite (3,6 m) und Tiefe (0,3 m); Untergleisschotter Breite (6,6 m) und Tiefe (0,3 m)\",\n          codes: \"Punkt: EBS, ESL, ESBS, Daylight_Ballast, Daylight_Subballast, R1\/R2; Verkn\u00fcpfung: Top, Ballast, Sleeper; Profilart: Sleeper, Ballast, Sub-ballast, Rail\",\n          tags: \"schiene bahn gleis eisenbahn schotter schotteroberbau schwelle spurweite eingleisig oberbau bahntrasse\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Der einfachste eingleisige Baustein ohne \u00dcberh\u00f6hung und ohne Ziele; f\u00fcr Visualisierung, nicht f\u00fcr die Konstruktionsarbeit.\" },\n        { name: \"Einzelgleis mit \u00dcberh\u00f6hung\", en: \"RailSingleTrackCANT\", dom: \"Schiene\", kat: \"Schiene\", reiter: \"Schiene\", gruppe: G_STD, form: \"rail\",\n          palette: \"RailSingleTrackCANT\",\n          zweck: \"Eingleisiger Oberbau, der auf die Schienen-\u00dcberh\u00f6hung (Cant) reagiert; links\/rechts mit Daylight abschlie\u00dfen.\",\n          param: \"Messen der \u00dcberh\u00f6hung bei (Mittellinie zu Mittellinie); Vorgabem\u00e4\u00dfige \u00dcberh\u00f6hung (0); Spur (1435 mm); Schienenma\u00dfe (Kopf 69 \/ Tiefe 168 \/ Basis 140 mm); Minimale Tiefe des Gleisschotters (0,61 m)\",\n          codes: \"Punkt: Rail, Cl_Rail, Gauge_Line, Schotter-\/Unterschotterkanten; Verkn\u00fcpfung: Top_Rail, Schotter, Unterschotter; Profilart: Rail, Tie, Ballast, Subballast, SoilFill, SubBase\",\n          tags: \"schiene bahn gleis eisenbahn ueberhoehung cant eingleisig schotter schwelle spurweite gleisueberhoehung\",\n          ziele: \"Spurversatz links\/rechts (optional); Spurh\u00f6he links\/rechts (optional)\", ueberh: true, massen: true,\n          wann: \"Der konstruktionsf\u00e4hige eingleisige Baustein: volle \u00dcberh\u00f6hung (Cant) aus der Achse plus vier optionale Ziele je Schiene.\" },\n        { name: \"Doppelgleis mit \u00dcberh\u00f6hung\", en: \"RailDoubleTrackCANT\", dom: \"Schiene\", kat: \"Schiene\", reiter: \"Schiene\", gruppe: G_STD, form: \"rail\",\n          palette: \"RailDoubleTrackCANT\",\n          zweck: \"Zweigleisiger Oberbau; berechnet die \u00dcberh\u00f6hung aus der Mittelachse (nicht aus Zielen), f\u00fcr Vorentwurf.\",\n          param: \"Messen der \u00dcberh\u00f6hung bei; Vorgabem\u00e4\u00dfige \u00dcberh\u00f6hung (0); Entw\u00e4sserungskanaltiefe (0,15 m); Spur (1435 mm); Basislinie zur ML linke Spur (6 m); Minimale Tiefe des Gleisschotters (305 mm)\",\n          codes: \"Verkn\u00fcpfung: Schotter im Schwellenzwischenraum u.a.; Profilart: Rail, Tie, Ballast, Subballast, SubBase, SoilFill\",\n          tags: \"schiene bahn gleis eisenbahn doppelgleis zweigleisig ueberhoehung cant schotter zweigleisige strecke\",\n          ziele: \"Spurversatz links\/rechts (optional); Spurh\u00f6he links\/rechts (optional)\", ueberh: true, massen: true,\n          wann: \"F\u00fcr zwei Gleise an EINER Basislinie inklusive Entw\u00e4sserungskanal dazwischen; f\u00fcr getrennte Achsen je Gleis die Multi-Track-Bausteine nehmen.\" },\n        { name: \"Bahnsteig (Einzelgleis)\", en: \"RailPlatform\", dom: \"Schiene\", kat: \"Schiene\", reiter: \"Schiene\", gruppe: G_STD, form: \"flaeche\",\n          palette: \"RailPlatform\",\n          zweck: \"Bahnsteig mit \u00fcblichen Schichten (Wand, Betonsockel, Gehweg, Sandbett, Fundament) f\u00fcr Haltepunkte an einem Gleis.\",\n          param: \"Seite (Rechts); Wandbreite (0,85 m); Betonsockel\/-einheiten\/-markierung (H\u00f6hen 0,06\/0,06\/0,04 m); Sandbett (0,02 m); Fu\u00dfwegneigung (40:1); Bahnsteigh\u00f6he \u00fcber Schienenoberseite (0,61 m)\",\n          codes: \"Profilarten: Wall, Concrete Plinth, Footway, Sandbed, Foundation (Detail am Kit pr\u00fcfen)\",\n          tags: \"schiene bahnsteig haltepunkt bahnhof plattform platform gehweg fundament station\",\n          ziele: \"Versatz zur Gleisachse (optional); Bahnsteigh\u00f6he (optional)\", ueberh: false, massen: true,\n          wann: \"F\u00fcr den einseitigen Bahnsteig an einer Gleisachse mit vollem Schichtaufbau (Wand, Sockel, Fu\u00dfweg, Sandbett, Fundament).\" },\n        { name: \"Bahnsteig (Doppelgleis)\", en: \"DualRailPlatform\", dom: \"Schiene\", kat: \"Schiene\", reiter: \"Schiene\", gruppe: G_STD, form: \"flaeche\",\n          palette: \"Dual_RailPlatform\",\n          zweck: \"Bahnsteig mit \u00fcblichen Schichten f\u00fcr Haltepunkte an zwei Gleisen.\",\n          param: \"Seite (Rechts); Betonsockel\/-einheiten\/-markierung; Sandbett (0,02 m); Fundamenttiefe (0,17 m); Bahnsteigh\u00f6he \u00fcber SO links (0,61 m); Versatz der sekund\u00e4ren Schiene (3,05 m)\",\n          codes: \"Profilarten analog RailPlatform (Detail am Kit pr\u00fcfen)\",\n          tags: \"schiene bahnsteig doppelgleis haltepunkt bahnhof plattform platform zwei gleise station\",\n          ziele: \"Bahnsteigkanten links\/rechts (optional); Bahnsteigh\u00f6hen links\/rechts (optional); sekund\u00e4re Gleisachse und -h\u00f6he (optional)\", ueberh: false, massen: true,\n          wann: \"F\u00fcr den Mittelbahnsteig variabler Breite zwischen ZWEI Gleisachsen; die zweite Achse wird per Zielparameter angebunden.\" },\n        { name: \"Mehrgleisiges Innengleis (beidseitige B\u00f6schung)\", en: \"Internal_Multi_Track\", dom: \"Schiene\", kat: \"Schiene\", reiter: \"Schiene\", gruppe: G_STD, form: \"rail\",\n          palette: \"Internal_Multi_Track\",\n          zweck: \"Einzelgleis-Baustein f\u00fcr mehrgleisige Anlagen mit st\u00fctzender B\u00f6schung auf beiden Seiten.\",\n          param: \"Vorgabem\u00e4\u00dfige \u00dcberh\u00f6hung (0); Messen der \u00dcberh\u00f6hung bei; Spur (1435 mm); Schienenma\u00dfe; Minimale Tiefe des Gleisschotters (305 mm); Untergleisschotter Tiefe (203 mm); Tragschicht und Bodenf\u00fcllung (je 0,30 m)\",\n          codes: \"Profilarten: Rail, Tie, Ballast, Subballast, SubBase, SoilFill (Detail am Kit pr\u00fcfen)\",\n          tags: \"schiene mehrgleisig innengleis gleisanlage bahnanlage schotter boeschung mehrere gleise\",\n          ziele: \"Anschluss links (Versatz und H\u00f6he, optional); Anschluss rechts (Versatz und H\u00f6he, optional)\", ueberh: true, massen: true,\n          wann: \"Das Innengleis im Mehrgleis-Verbund: schlie\u00dft beidseitig an Nachbargleise an (jedes Gleis mit eigener Achse und eigenem L\u00e4ngsschnitt).\" },\n        { name: \"Mehrgleisiges Randgleis, B\u00f6schung links\", en: \"Left_Hand_Multi_Track\", dom: \"Schiene\", kat: \"Schiene\", reiter: \"Schiene\", gruppe: G_STD, form: \"rail\",\n          palette: \"Left_Hand_Multi_Track\",\n          zweck: \"Einzelgleis-Baustein f\u00fcr mehrgleisige Anlagen mit B\u00f6schung links (Randgleis).\",\n          param: \"Vorgabem\u00e4\u00dfige \u00dcberh\u00f6hung (0); Entw\u00e4sserungskanaltiefe (0,15 m); Spur (1435 mm); Schienenma\u00dfe; Verbindungsl\u00e4nge (2,59 m); Minimale Tiefe des Gleisschotters (305 mm)\",\n          codes: \"Profilarten analog Einzelgleis mit \u00dcberh\u00f6hung (Detail am Kit pr\u00fcfen)\",\n          tags: \"schiene mehrgleisig randgleis boeschung links gleisanlage bahnanlage schotter\",\n          ziele: \"Anschluss rechts (Versatz und H\u00f6he, optional)\", ueberh: true, massen: true,\n          wann: \"Das linke Randgleis im Mehrgleis-Verbund: schlie\u00dft nur nach rechts zum Nachbargleis an, links l\u00e4uft es frei aus.\" },\n        { name: \"Mehrgleisiges Randgleis, B\u00f6schung rechts\", en: \"Right_Hand_Multi_Track\", dom: \"Schiene\", kat: \"Schiene\", reiter: \"Schiene\", gruppe: G_STD, form: \"rail\",\n          palette: \"Right_Hand_Multi_Track\",\n          zweck: \"Einzelgleis-Baustein f\u00fcr mehrgleisige Anlagen mit B\u00f6schung rechts (Randgleis).\",\n          param: \"Messen der \u00dcberh\u00f6hung bei; Vorgabem\u00e4\u00dfige \u00dcberh\u00f6hung (0); Entw\u00e4sserungskanaltiefe (0,15 m); Spur (1435 mm); Schienenma\u00dfe; Verbindungsl\u00e4nge (2,59 m)\",\n          codes: \"Profilarten analog Einzelgleis mit \u00dcberh\u00f6hung (Detail am Kit pr\u00fcfen)\",\n          tags: \"schiene mehrgleisig randgleis boeschung rechts gleisanlage bahnanlage schotter\",\n          ziele: \"Anschluss links (Versatz und H\u00f6he, optional)\", ueberh: true, massen: true,\n          wann: \"Das rechte Randgleis im Mehrgleis-Verbund, spiegelbildlich zum linken Randbaustein.\" },\n        { name: \"Trapezgraben \/ offener Kanal\", en: \"Channel\", dom: \"Graben\", kat: \"Graben\", reiter: \"Graben und Rohr\", gruppe: G_STD, form: \"trench\",\n          palette: \"Kanal\",\n          zweck: \"Offener trapezf\u00f6rmiger Kanal\/Graben mit optionaler Auskleidung und B\u00f6schungs-Verkn\u00fcpfungen, Anschluss \u00fcber die Sohlenmitte.\",\n          param: \"Tiefe (2,0 m); Unten Breite (2,0 m); B\u00f6schung (1:1); Belagstiefe (0,1 m); Verl\u00e4ngerungsh\u00f6he links\/rechts (0,5 m); B\u00f6schung steigend links\/rechts (4:1)\",\n          codes: \"Punkt: Channel_Flowline, Channel_Bottom, Channel_Top, Channel_Backslope; Verkn\u00fcpfung: Datum, Top; Profilart: Lining_Material\",\n          tags: \"graben kanal gerinne trapezgraben offener kanal wasserlauf gewaesser entwaesserung mulde\",\n          ziele: \"Verl\u00e4ngerungsh\u00f6hen, Bermenbreiten und -h\u00f6hen links\/rechts (alle optional)\", ueberh: false, massen: true,\n          wann: \"F\u00fcr das symmetrische Trapezgerinne um die Basislinie mit optionaler Auskleidung und beidseitigen Bermen; die Sohle folgt der Gradiente minus Tiefe.\" },\n        { name: \"Kanal mit parabelf\u00f6rmiger Sohle\", en: \"ChannelParabolicBottom\", dom: \"Graben\", kat: \"Graben\", reiter: \"Graben und Rohr\", gruppe: G_STD, form: \"trench\",\n          palette: \"KanalParabolischUnten\",\n          zweck: \"Wie Trapezgraben, aber mit parabelf\u00f6rmig ausgerundeter Sohle statt flacher Sohle.\",\n          param: \"Tiefe (2,0 m); Unten Breite (2,0 m); Bogen Tessellationspunkte (7); B\u00f6schung (1:1); Belagstiefe (0,1 m); Verl\u00e4ngerungsh\u00f6he links (0,5 m)\",\n          codes: \"Punkt: Channel_Flowline, Channel_Bottom, Channel_Top; Verkn\u00fcpfung: Datum, Top; Profilart: Lining_Material\",\n          tags: \"graben kanal parabel parabelsohle gerinne gewaesser ausgerundet entwaesserung\",\n          ziele: \"Verl\u00e4ngerungsh\u00f6hen, Bermenbreiten und -h\u00f6hen links\/rechts (alle optional)\", ueberh: false, massen: true,\n          wann: \"Wie Kanal, aber mit parabolisch ausgerundeter Sohle (hydraulisch g\u00fcnstiger); die Feinheit steuern die Tessellationspunkte.\" },\n        { name: \"Stra\u00dfengraben (flach oder V-f\u00f6rmig)\", en: \"Ditch\", dom: \"Graben\", kat: \"Graben\", reiter: \"Graben und Rohr\", gruppe: G_STD, form: \"trench\",\n          palette: \"Graben\",\n          zweck: \"Flacher oder V-f\u00f6rmiger Stra\u00dfengraben mit frei steuerbarer Lage und Tiefe, wahlweise nur Ein-\/Auftrag, mit optionaler Auskleidung.\",\n          param: \"Seite (Rechts); Mit Graben (Abtrag\/Auftrag); Graben Breite (1 m); Grabentiefe (1 m); B\u00f6schung fallend\/steigend (je 4:1); Pufferbreiten (je 1 m)\",\n          codes: \"Punkt: Ditch_In, Ditch_Out (+ Hinge); Verkn\u00fcpfung: Ditch, Slope_Link; Profilart: Auskleidung optional\",\n          tags: \"graben strassengraben entwaesserungsgraben v-graben muldengraben seitengraben mulde entwaesserung\",\n          ziele: \"Grabenr\u00e4nder innen\/au\u00dfen (optional, per Achse); Grabensohle (optional, per L\u00e4ngsschnitt); Ziel-DGM (optional)\", ueberh: false, massen: true,\n          wann: \"Der seitlich angebaute Stra\u00dfengraben mit Abtrag\/Auftrag-Bedingung; R\u00e4nder und Sohlh\u00f6he lassen sich \u00fcber Achs- und L\u00e4ngsschnitt-Ziele steuern.\" },\n        { name: \"Seitengraben mit Vor-\/Hinterb\u00f6schung\", en: \"SideDitch\", dom: \"Graben\", kat: \"Graben\", reiter: \"Graben und Rohr\", gruppe: G_STD, form: \"trench\",\n          palette: \"Seitengraben\",\n          zweck: \"Einfacher Seitengraben mit Sohlbreite, Seitenneigungen und optionaler Vor-\/Hinterb\u00f6schung.\",\n          param: \"Seite (Rechts); Tiefe (0,45 m); Unten Breite (0,5 m); B\u00f6schung (1:2); Graben Wandtiefe (0,1 m); Verl\u00e4ngerungsh\u00f6heInnen (0,15 m)\",\n          codes: \"Punkt: Ditch_Back, Ditch_Face, Ditch_In, Ditch_Out; Verkn\u00fcpfung: Top, Ditch_Top, Datum; Profilart: Ditch\",\n          tags: \"graben seitengraben strassengraben entwaesserung hinterboeschung vorderboeschung mulde\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Der feste trapezf\u00f6rmige Seitengraben als massive Grabenschale mit Wandst\u00e4rke, rein parametrisch ohne Ziel-Anbindung.\" },\n        { name: \"U-f\u00f6rmiger Seitengraben\", en: \"SideDitchUShape\", dom: \"Graben\", kat: \"Graben\", reiter: \"Graben und Rohr\", gruppe: G_STD, form: \"trench\",\n          palette: \"SeitengrabenU-Profilart\",\n          zweck: \"U-f\u00f6rmiger Graben mit variablen Wandst\u00e4rken und optionalen Bermen.\",\n          param: \"Unten Breite (0,6 m); Grabentiefe (0,6 m); Innenwandst\u00e4rken A1\/B1 (0,15 m); Grabenbodenbelag (0,15 m); Bermen innen\/au\u00dfen (0,5 \/ 1,0 m, Neigung 4 %)\",\n          codes: \"Ditch-Codes analog Seitengraben (am Kit pr\u00fcfen)\",\n          tags: \"graben u-graben u-form seitengraben betongraben entwaesserung befestigter graben\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"F\u00fcr den U-f\u00f6rmigen (kastenartigen) Betongraben mit getrennten Wandst\u00e4rken und optionalen Bermen beidseitig.\" },\n        { name: \"U-Graben mit Abdeckung\", en: \"SideDitchWithLid\", dom: \"Graben\", kat: \"Graben\", reiter: \"Graben und Rohr\", gruppe: G_STD, form: \"trench\",\n          palette: \"SeitengrabenMitAbdeckung\",\n          zweck: \"Wie U-f\u00f6rmiger Seitengraben, zus\u00e4tzlich mit einer Abdeckung (Lid) \u00fcber dem Graben.\",\n          param: \"Seite (Rechts); Grabentiefe (0,6 m); Unten Breite (0,3 m); Breite Oben (0,6 m); Innenwandst\u00e4rken A1\/B1 (0,15 \/ 0,2 m); Berme Breite Innen (0,5 m)\",\n          codes: \"Ditch-Codes analog U-Graben (am Kit pr\u00fcfen)\",\n          tags: \"graben u-graben abdeckung deckel lid abgedeckt entwaesserung kastengraben\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Wie der U-Profil-Graben, aber mit Deckelplatte als eigener Profilart (abgedeckter, \u00fcberfahrbarer Seitengraben).\" },\n        { name: \"Rohrgraben, flache Sohle (feste Breite)\", en: \"TrenchPipe1\", dom: \"Graben\", kat: \"Graben\", reiter: \"Graben und Rohr\", gruppe: G_STD, form: \"trench\",\n          palette: \"GrabenKanal1\",\n          zweck: \"Flachsohliger Rohrgraben mit gleichen Seitenneigungen und bis zu drei Verf\u00fcllungsschichten; feste, gesetzte Breite.\",\n          param: \"Breite (2,0 m); B\u00f6schung (3:1); Bettungstiefe (0,0); Spezielle Sch\u00fcttungstiefe (0,0); Versatz zu Boden (0,0)\",\n          codes: \"Punkt: Trench_Bottom, Trench_Daylight, Trench_Bedding, Trench_Backfill; Verkn\u00fcpfung: Trench Datum, Trench_Bottom; Profilart: Trench_Bedding, Trench_Backfill\",\n          tags: \"graben rohrgraben leitungsgraben rohrleitung bettung verfuellung kanalgraben leitung rohr haltung kanalnetz\",\n          ziele: \"Vorhandenes DGM (Pflicht)\", ueberh: false, massen: true,\n          wann: \"Der einfachste Rohrgraben mit ebener Sohle und festen B\u00f6schungen; die Sohle folgt der Gradiente, ohne Kanalnetz-Bezug.\" },\n        { name: \"Rohrgraben mit Rohrnetz-Ziel (Mindest\u00fcberdeckung)\", en: \"TrenchPipe2\", dom: \"Graben\", kat: \"Graben\", reiter: \"Graben und Rohr\", gruppe: G_STD, form: \"trench\",\n          palette: \"GrabenHaltung2\",\n          zweck: \"Wie Rohrgraben flache Sohle, aber die Tiefe folgt einem Ziel-Rohrnetz \u00fcber eine Mindest-\u00dcberdeckung; bis zu zwei Rohrnetze.\",\n          param: \"B\u00f6schung (3:1); Bettungstiefe (0,0); Minimal\u00fcberdeckung spezielle Sch\u00fcttung (0,0); Breite Grabenboden (2,0 m); Kanalnetz 1\/2 Versatz (0,0)\",\n          codes: \"Punkt: Trench_Bottom, Trench_Daylight, Trench_Bedding, Trench_Backfill; Verkn\u00fcpfung: Trench Datum, Trench_Bedding; Profilart: Trench_Bedding, Trench_Backfill\",\n          tags: \"graben rohrgraben leitungsgraben rohrnetz ueberdeckung ziel bettung leitung rohr kanal haltung kanalnetz\",\n          ziele: \"Vorhandenes DGM (Pflicht); Kanalnetz 1 (Pflicht); Kanalnetz 2 (optional)\", ueberh: false, massen: true,\n          wann: \"Wenn die Grabentiefe echten Kanalnetz-Haltungen folgen soll: Sohle und Bettung werden aus Rohrdurchmesser und Mindest\u00fcberdeckung berechnet (bis zwei Netze).\" },\n        { name: \"Rohrgraben mit Fels-\/Zweitoberfl\u00e4che\", en: \"TrenchPipe3\", dom: \"Graben\", kat: \"Graben\", reiter: \"Graben und Rohr\", gruppe: G_STD, form: \"trench\",\n          palette: \"GrabenHaltung3\",\n          zweck: \"Wie Rohrgraben mit Rohrnetz-Ziel, kann aber zwei Oberfl\u00e4chen (Boden und Fels) auswerten und nutzt die jeweils untenliegende Neigung.\",\n          param: \"B\u00f6schung (3:1); Breite (2,0 m); Bettungstiefe (0,0); Minimal\u00fcberdeckung spezielle Sch\u00fcttung (0,0); B\u00f6schung Felsbruch (1:1)\",\n          codes: \"Punkt: Trench_Bottom, Trench_Daylight, Trench_Bedding, Trench_Backfill; Verkn\u00fcpfung: Trench Datum, Trench_Daylight; Profilart: Trench_Bedding, Trench_Backfill\",\n          tags: \"graben rohrgraben fels felsoberflaeche zweitoberflaeche leitungsgraben rohrnetz bettung leitung rohr haltung kanalnetz\",\n          ziele: \"Vorhandenes DGM (Pflicht); Fels-DGM (optional); Kanalnetz 1 (Pflicht); Kanalnetz 2 (optional)\", ueberh: false, massen: true,\n          wann: \"Wie GrabenHaltung2, zus\u00e4tzlich mit optionalem Fels-DGM: unterhalb des Felshorizonts gilt eine eigene, steilere Felsbruch-B\u00f6schung.\" },\n        { name: \"Steinf\u00fcll-Dr\u00e4n mit Rohr (Sickergraben\/Rigole)\", en: \"TrenchWithPipe\", dom: \"Graben\", kat: \"Graben\", reiter: \"Graben und Rohr\", gruppe: G_STD, form: \"trench\",\n          palette: \"GrabenMitHaltung\",\n          zweck: \"Steingef\u00fclltes Dr\u00e4nbauwerk mit rundem Rohr im Inneren (Sickergraben\/Rigole mit Rohr).\",\n          param: \"Seite (Rechts); Zuordnungspunkt (Ecke oben); Unten Breite (0,3 m); Breite Oben (0,5 m); Tiefe (0,6 m); Bettungstiefe (0,2 m); Kanaldurchmesser (0,2 m)\",\n          codes: \"Punkt: Drain_Bottom, Drain_Top, Drain_Center, Flow_Line; Verkn\u00fcpfung: Drain_Top, Datum; Profilart: Trench_Backfill, Drain_Area\",\n          tags: \"graben sickergraben rigole draenage draenung steinfuellung dr\u00e4nrohr entwaesserung versickerung rohr haltung\",\n          ziele: \"Tiefe (optional, per L\u00e4ngsschnitt-Ziel)\", ueberh: false, massen: true,\n          wann: \"F\u00fcr den steingef\u00fcllten Sickergraben mit rundem Rohr als echter Querschnittsgeometrie (Durchmesser als Parameter, kein Kanalnetz-Ziel).\" },\n        { name: \"Einzelrohrgraben mit tiefenabh\u00e4ngiger Wand\", en: \"PipeTrenchAdjustDiameter\", dom: \"Graben\", kat: \"Graben\", reiter: \"Graben und Rohr\", gruppe: G_STD, form: \"trench\",\n          palette: \"PipeTrenchAdjustDiameter\",\n          zweck: \"Einzelrohr im Graben zur Volumenermittlung von Bettung und Verf\u00fcllung; W\u00e4nde senkrecht bei geringer Tiefe, geneigt ab ca. 3,5 m Tiefe.\",\n          param: \"Breite unten (1 m); Haltungs\u00fcberdeckung (0,15 m); Haltungsdurchmesser (0,2 m); Bettungstiefe (0,05 m)\",\n          codes: \"Punkt: PipeBottom, PipeCenter, PipeTop, Top; Verkn\u00fcpfung: PipeBedding, TrenchSlopeInner\/Outer; Profilart: PipeBedding, TrenchMaterial\",\n          tags: \"graben rohrgraben einzelrohr leitungsgraben rohrdurchmesser bettung verfuellung volumen leitung rohr haltung\",\n          ziele: \"B\u00f6schungsfu\u00df-DGM (Pflicht)\", ueberh: false, massen: true,\n          wann: \"Der PKT-Rohrgraben, dessen Tiefe sich dynamisch aus Rohrdurchmesser plus \u00dcberdeckung ergibt; W\u00e4nde senkrecht bis 3,5 m Tiefe, dar\u00fcber geb\u00f6scht.\" },\n        { name: \"St\u00fctzwand, einseitig geneigt (mit Sporn)\", en: \"RetainWallTapered\", dom: \"St\u00fctzwand\", kat: \"St\u00fctzwand\", reiter: \"St\u00fctzmauer\", gruppe: G_STD, form: \"wall\",\n          palette: \"St\u00fctzmauerKonischZulaufend\",\n          zweck: \"St\u00fctzwand mit einer geneigten (verj\u00fcngten) Seite und optionalem Sporn; Ein-\/Auftrag \u00fcber die Zieloberfl\u00e4che bestimmt.\",\n          param: \"Seite (Rechts); Wand obere Breite (0,292 m); H\u00f6he Oben (0,40 m); Fundament\u00dcberdeckung (0,50 m); Schl\u00fcssel (Ja)\",\n          codes: \"Punkt: RW_Front, RW_Top, RW_Back, RW_Hinge, RW_Inside, RW_Outside; Verkn\u00fcpfung: Top, Wall, Footing_Bottom; Profilart: RWall\",\n          tags: \"stuetzwand winkelstuetzwand retaining wall st\u00fctzmauer geneigt verjuengt sporn fundament abfangen boeschung sichern\",\n          ziele: \"Ziel-DGM (Pflicht); Wandh\u00f6he (optional, per L\u00e4ngsschnitt)\", ueberh: false, massen: true,\n          wann: \"Die Standard-Winkelst\u00fctzwand mit einer geneigten Seite und optionalem Schl\u00fcssel; die Wandrichtung dreht zwischen Abtrag und Auftrag.\" },\n        { name: \"St\u00fctzwand geneigt, breit (hohe W\u00e4nde)\", en: \"RetainWallTaperedWide\", dom: \"St\u00fctzwand\", kat: \"St\u00fctzwand\", reiter: \"St\u00fctzmauer\", gruppe: G_STD, form: \"wall\",\n          palette: \"St\u00fctzmauerKonischZulaufendBreit\",\n          zweck: \"Wie geneigte St\u00fctzwand, aber f\u00fcr hohe W\u00e4nde ausgelegt (breiteres Fundament\/Querschnitt).\",\n          param: \"Seite (Rechts); Wand obere Breite (0,450 m); H\u00f6he Oben (0,40 m); Fundament\u00dcberdeckung (0,50 m); Schl\u00fcssel (Ja)\",\n          codes: \"RW-Codes analog geneigte St\u00fctzwand; Profilart: RWall (am Kit pr\u00fcfen)\",\n          tags: \"stuetzwand retaining wall st\u00fctzmauer hohe wand breit geneigt fundament abfangen\",\n          ziele: \"Ziel-DGM (Pflicht); Wandh\u00f6he (optional)\", ueberh: false, massen: true,\n          wann: \"Die breitere Variante der konischen St\u00fctzmauer, laut Referenz f\u00fcr W\u00e4nde ab etwa 5,5 m H\u00f6he.\" },\n        { name: \"St\u00fctzwand, beidseitig senkrecht (mit Sporn)\", en: \"RetainWallVertical\", dom: \"St\u00fctzwand\", kat: \"St\u00fctzwand\", reiter: \"St\u00fctzmauer\", gruppe: G_STD, form: \"wall\",\n          palette: \"St\u00fctzmauerVertikal\",\n          zweck: \"St\u00fctzwand mit beidseitig senkrechten Wandfl\u00e4chen (keine Verj\u00fcngung) und optionalem Sporn.\",\n          param: \"Seite (Rechts); Wandbreite (0,292 m); H\u00f6he Oben (0,40 m); Fundament\u00dcberdeckung (0,50 m); Schl\u00fcssel (Ja)\",\n          codes: \"Punkt: RW_Front, RW_Top, RW_Back, RW_Hinge, RW_Inside, RW_Outside; Verkn\u00fcpfung: Top, Footing_Bottom; Profilart: RWall\",\n          tags: \"stuetzwand retaining wall st\u00fctzmauer senkrecht vertikal fundament sporn abfangen boeschung sichern\",\n          ziele: \"Ziel-DGM (Pflicht); Wandh\u00f6he (optional)\", ueberh: false, massen: true,\n          wann: \"Wenn beide Wandseiten senkrecht stehen sollen (konstante Wandst\u00e4rke \u00fcber die H\u00f6he).\" },\n        { name: \"St\u00fctzwand mit Fundament unter der Auftragsseite\", en: \"RetainWallToLowSide\", dom: \"St\u00fctzwand\", kat: \"St\u00fctzwand\", reiter: \"St\u00fctzmauer\", gruppe: G_STD, form: \"wall\",\n          palette: \"St\u00fctzmauerAnUntereSeite\",\n          zweck: \"Wie geneigte St\u00fctzwand, aber das Fundament liegt unter der hohen Auftragsseite (low side).\",\n          param: \"Seite (Rechts); Wand obere Breite (0,292 m); H\u00f6he Oben (0,40 m); Fundament\u00dcberdeckung (0,50 m); Schl\u00fcssel (Ja)\",\n          codes: \"RW-Codes analog geneigte St\u00fctzwand; Profilart: RWall (am Kit pr\u00fcfen)\",\n          tags: \"stuetzwand retaining wall st\u00fctzmauer auftragsseite low side fundament abfangen\",\n          ziele: \"Ziel-DGM (Pflicht); Wandh\u00f6he (optional)\", ueberh: false, massen: true,\n          wann: \"Wenn das Fundament komplett auf der hohen Auftragsseite liegen soll und nicht zur tiefen Seite hinausragen darf.\" },\n        { name: \"St\u00fctzwand mit Bankett und Grabenanschluss\", en: \"RetainWallTieToDitch\", dom: \"St\u00fctzwand\", kat: \"St\u00fctzwand\", reiter: \"St\u00fctzmauer\", gruppe: G_STD, form: \"wall\",\n          palette: \"St\u00fctzmauerAnGraben\",\n          zweck: \"St\u00fctzwand mit befestigtem Bankett und speziellen Anschlussneigungen an einen bestehenden Graben; optionale Schutzwand oben und Sporn unten.\",\n          param: \"Seite (Rechts); Bankett Breite (1,33 m); Deckschicht\/Zwischenschicht Tiefe (je 0,025); Basis Tiefe (0,1); Untere Tragschicht Tiefe (0,3); Wandbreite (0,292 m); Schl\u00fcssel (Ja)\",\n          codes: \"Punkt: Daylight, Walk_Edge, RW_Hinge, RW_Inside, RW_Outside; Verkn\u00fcpfung: Top, Wall, Footing, Pave1\/Pave2, Base; Profilart: RWall, Barrier, Belag-\/Tragschichten\",\n          tags: \"stuetzwand retaining wall st\u00fctzmauer bankett graben anschluss schutzwand fundament boeschung\",\n          ziele: \"Grabenversatz (Pflicht); Angepasstes DGM (Pflicht); Bankettrand (optional)\", ueberh: true, massen: true,\n          wann: \"Die einzige St\u00fctzwand mit integriertem befestigtem Bankett und Anschlussneigung an einen vorhandenen Graben (Pflicht-Ziel Grabenversatz).\" },\n        { name: \"Bruchstein-St\u00fctzwand\", en: \"RockRetainingWall\", dom: \"St\u00fctzwand\", kat: \"St\u00fctzwand\", reiter: \"St\u00fctzmauer\", gruppe: G_STD, form: \"wall\",\n          palette: \"FelsSt\u00fctzWand\",\n          zweck: \"Verkn\u00fcpfungen f\u00fcr eine Bruchstein-\/Natursteinst\u00fctzwand zum Abfangen des Bodens; wahlweise feste H\u00f6he oder Gel\u00e4ndeanschluss.\",\n          param: \"Seite (Rechts); Felswand Fundamenttiefe (0,30 m); Felswand Neigung (0,25:1); Felswand obere Breite (0,30 m); B\u00f6schungsfu\u00df Abtrag (3:1); Maximale St\u00fctzwandh\u00f6he (1,8 m); Feste H\u00f6he (1,0 m)\",\n          codes: \"Punkt: Face_Wall, ETW, Rock Wall, Daylight; Verkn\u00fcpfung: Rock Wall, Top, Datum, Daylight, Pave; Profilart: Rock Wall\",\n          tags: \"stuetzwand bruchstein naturstein steinwand trockenmauer retaining wall st\u00fctzmauer gel\u00e4ndeanschluss abfangen\",\n          ziele: \"Vorhandenes DGM (optional); Ober-\/Unterkante der Wand (optional)\", ueberh: false, massen: true,\n          wann: \"F\u00fcr die geschichtete Bruchstein-\/Felsblockwand mit geneigter Front; kann rein parametrisch laufen, alle Ziele sind optional.\" },\n        { name: \"Markierung: vertikaler Bezugspunkt\", en: \"LinkVertical (Paletten-Preset)\", dom: \"Allgemein\", kat: \"Allgemein und Bausteine\", reiter: \"Beschriftung \/ Markierung (Preset)\", gruppe: G_STD, form: \"marker\",\n          palette: \"AnschlussVertikal (vorbelegte Palette)\",\n          zweck: \"Paletten-Voreinstellung, die einen vertikal versetzten Markierungspunkt setzt (auf Basis der vertikalen Verkn\u00fcpfung), etwa als Bezugspunkt f\u00fcr Beschriftung. Kein eigenst\u00e4ndiges Objekt, sondern eine vorbelegte Palette; die genaue Klasse am Kit pr\u00fcfen.\",\n          param: \"vertikale Auslenkung, Punkt-\/Verkn\u00fcpfungscodes\",\n          codes: \"Punkt\/Verkn\u00fcpfung benutzerdefiniert (Codes-Parameter)\",\n          tags: \"beschriftung markierung marker vertikal senkrecht bezugspunkt label annotation punkt preset voreinstellung\",\n          ziele: \"keine\", ueberh: false, massen: false,\n          wann: \"Vorbelegter senkrechter Bezugspunkt f\u00fcr Beschriftung; technische Basis ist AnschlussVertikal.\" },\n        { name: \"Markierung: 2,5 m nach rechts oder links versetzt\", en: \"LinkOffsetAndSlope (Paletten-Preset)\", dom: \"Allgemein\", kat: \"Allgemein und Bausteine\", reiter: \"Beschriftung \/ Markierung (Preset)\", gruppe: G_STD, form: \"marker\",\n          palette: \"AnschlussVersatzNeigung (vorbelegte Palette, 2,5 m)\",\n          zweck: \"Paletten-Voreinstellung, die einen Markierungspunkt bei 2,5 m Versatz (links oder rechts) setzt, auf Basis der Versatz-Neigungs-Verkn\u00fcpfung. Vorbelegte Palette, kein eigenst\u00e4ndiges Objekt; genaue Klasse am Kit pr\u00fcfen.\",\n          param: \"Versatz 2,5 m, Seite (links\/rechts), Neigung, Punkt-\/Verkn\u00fcpfungscodes\",\n          codes: \"Punkt\/Verkn\u00fcpfung benutzerdefiniert (Codes-Parameter)\",\n          tags: \"beschriftung markierung marker 2,5 2.5 versetzt versatz offset rechts links bezugspunkt label preset voreinstellung\",\n          ziele: \"keine\", ueberh: false, massen: false,\n          wann: \"Vorbelegter Markierungspunkt bei 2,5 m Versatz; technische Basis ist AnschlussVersatzNeigung.\" },\n        { name: \"Markierung: 5 m nach rechts oder links versetzt\", en: \"LinkOffsetAndSlope (Paletten-Preset)\", dom: \"Allgemein\", kat: \"Allgemein und Bausteine\", reiter: \"Beschriftung \/ Markierung (Preset)\", gruppe: G_STD, form: \"marker\",\n          palette: \"AnschlussVersatzNeigung (vorbelegte Palette, 5 m)\",\n          zweck: \"Paletten-Voreinstellung, die einen Markierungspunkt bei 5 m Versatz (links oder rechts) setzt, auf Basis der Versatz-Neigungs-Verkn\u00fcpfung. Vorbelegte Palette, kein eigenst\u00e4ndiges Objekt; genaue Klasse am Kit pr\u00fcfen.\",\n          param: \"Versatz 5 m, Seite (links\/rechts), Neigung, Punkt-\/Verkn\u00fcpfungscodes\",\n          codes: \"Punkt\/Verkn\u00fcpfung benutzerdefiniert (Codes-Parameter)\",\n          tags: \"beschriftung markierung marker 5 versetzt versatz offset rechts links bezugspunkt label preset voreinstellung\",\n          ziele: \"keine\", ueberh: false, massen: false,\n          wann: \"Vorbelegter Markierungspunkt bei 5 m Versatz; technische Basis ist AnschlussVersatzNeigung.\" },\n        \/\/ ===================== ERG\u00c4NZT: weitere Stock-Bestandteile (Autodesk DEU-Referenz 2026) =====================\n        { name: \"DachprofilFahrspur\", en: \"CrownedLane\", kat: \"Fahrbahn\", reiter: \"Fahrstreifen\", gruppe: G_STD, palette: \"DachprofilFahrspur\", form: \"lane\",\n          zweck: \"Mit diesem Querschnittsbestandteil wird eine Fahrspur mit Dachprofil erstellt, die \u00fcber eine separate Neigungssteuerung f\u00fcr die Tragschicht verf\u00fcgt.\",\n          param: \"Breite linke Fahrspur (3,6 m); Breite rechte Fahrspur (3,6 m); Linke Vorgabeneigung % (-2,0); Rechte Vorgabeneigung % (-2,0); Neigung Basisschicht % (-3,0); Deckschicht Tiefe (0,025 m); Zwischenschicht Tiefe (0,025 m)\",\n          codes: \"Punkt: ETW, Crown, Lane, ETW_Pave1, Crown_Pave1, Lane_Pave1, ETW_Pave2, Crown_Pave2; Verkn\u00fcpfung: Top, Pave, Pave1, Pave2, Tragschicht, Untere Tragschicht Planum; Profilart: Pave1, Pave2, Tragschicht, Untere Tragschicht\",\n          tags: \"crowned crownedlane dachprofil dachprofilfahrspur fahrbahn fahrspur fahrstreifen lane\",\n          ziele: \"optional Breiten-\/H\u00f6henziel\", ueberh: false, massen: true,\n          wann: \"Mit diesem Querschnittsbestandteil wird eine Fahrspur mit Dachprofil erstellt, die \u00fcber eine separate Neigungssteuerung f\u00fcr die Tragschicht verf\u00fcgt.\" },\n        { name: \"FahrspurUnterschiedlicheNeigungen\", en: \"LaneBrokenBack\", kat: \"Fahrbahn\", reiter: \"Fahrstreifen\", gruppe: G_STD, palette: \"FahrspurUnterschiedlicheNeigungen\", form: \"lane\",\n          zweck: \"Dieser Querschnittsbestandteil erstellt eine Querprofildarstellung einer Fahrbahn mit unterschiedlicher Querneigung der Fahrspuren, bei der die innere Fahrspur eine andere Neigung.\",\n          param: \"Seite (Rechts); Dachprofilpunkt auf Innenseite (Nein); Innere Breite (3,6 m); Innere Vorgabe %Neigung (- 2,0 (%)); \u00c4u\u00dfere Breite (3,6 m); \u00c4u\u00dfere Vorgabe %Neigung (- 2,5 (%)); Deckschicht Tiefe (0,025 m); Zwischenschicht Tiefe (0,025 m)\",\n          codes: \"Punkt: Code, ETW, Crown, Lane, ETW_Pave1, Crown_Pave1, Lane_Pave1, ETW_Pave2; Verkn\u00fcpfung: Oben, Belag, Pave1, Pave2, Tragschicht, Untere Tragschicht Planum; Profilart: Pave1, Pave2, Tragschicht, Untere Tragschicht\",\n          tags: \"back broken fahrbahn fahrspur fahrspurunterschiedlicheneigungen fahrstreifen lane lanebrokenback neigungen unterschiedliche\",\n          ziele: \"optional Breiten-\/H\u00f6henziel\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil erstellt eine Querprofildarstellung einer Fahrbahn mit unterschiedlicher Querneigung der Fahrspuren, bei der die innere Fahrspur eine andere Neigung.\" },\n        { name: \"FahrspurVonKonischzulaufenderMittelstreifen1\", en: \"LaneFromTaperedMedian1\", kat: \"Fahrbahn\", reiter: \"Fahrstreifen\", gruppe: G_STD, palette: \"FahrspurVonKonischzulaufenderMittelstreifen1\", form: \"lane\",\n          zweck: \"Dieser Querschnittsbestandteil f\u00fcgt eine oder mehrere Fahrspuren au\u00dfen mit einer konstanten Neigung von einer Achse ein.\",\n          param: \"Seite (Rechts); Fahrspurbreite (3,6 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigungsrichtung (Vom Dachprofil); Vorgabeneigung (- 2,0%); Innere Anpassung (0,0); \u00c4u\u00dfere Anpassung (0,0); Deckschicht Tiefe (0,025 m)\",\n          codes: \"Punkt: Code, ETW, ETW_Pave1, ETW_Pave2, Fahrspurrand_Au\u00dfen_Tragschicht, Fahrspurrand_Au\u00dfen_Frostschutzschicht; Verkn\u00fcpfung: Top, Pave, Pave1, Pave2, Tragschicht, Untere Tragschicht, Planum; Profilart: Pave1, Pave2, Trags\",\n          tags: \"fahrbahn fahrspur fahrspurvonkonischzulaufendermittelstreifen1 fahrstreifen from konischzulaufender lane lanefromtaperedmedian1 median1 mittelstreifen1 tapered von\",\n          ziele: \"Mittelstreifenrand (Versatzziel)\", ueberh: true, massen: true,\n          wann: \"Dieser Querschnittsbestandteil f\u00fcgt eine oder mehrere Fahrspuren au\u00dfen mit einer konstanten Neigung von einer Achse ein.\" },\n        { name: \"Fahrspur\u00fcbergangVonKonischzulaufenderMittelstreifen2\", en: \"LaneFromTaperedMedian2\", kat: \"Fahrbahn\", reiter: \"Fahrstreifen\", gruppe: G_STD, palette: \"Fahrspur\u00fcbergangVonKonischzulaufenderMittelstreifen2\", form: \"lane\",\n          zweck: \"Dieser Querschnittsbestandteil f\u00fcgt eine oder mehrere Fahrspuren nach au\u00dfen von einer Achse ein, die die Kante eines Mittelstreifens definiert.\",\n          param: \"Seite (Rechts); Innenfahrspurbreite (3,6 m); Fahrspur innen - \u00dcberh\u00f6hungsneigung verwenden (Neigung Fahrspur innen); Vorgabeneigung innen (2,0%); Fahrspur au\u00dfen - \u00dcberh\u00f6hungsneigung verwenden (Neigung Fahrstreifen au\u00dfen); Vorgabeneigung au\u00dfen (- 2,0%); Au\u00dfenfahrspurbreite (3,6 m); Innere Anpassung (0,0)\",\n          codes: \"Punkt: Code, ETW, ETW_Pave1, ETW_Pave2, Fahrstreifenrand_Au\u00dfen_Tragschicht, Fahrspurrand_Au\u00dfen_Frostschutzschicht, Crown, Crown_Pave1; Verkn\u00fcpfung: Oben, Belag, Pave1, Pave2, Tragschicht, Untere Tragschicht, Planum; Prof\",\n          tags: \"fahrbahn fahrspur\u00fcbergang fahrspur\u00fcbergangvonkonischzulaufendermittelstreifen2 fahrstreifen from konischzulaufender lane lanefromtaperedmedian2 median2 mittelstreifen2 tapered von\",\n          ziele: \"Mittelstreifenrand (Versatzziel)\", ueberh: true, massen: true,\n          wann: \"Dieser Querschnittsbestandteil f\u00fcgt eine oder mehrere Fahrspuren nach au\u00dfen von einer Achse ein, die die Kante eines Mittelstreifens definiert.\" },\n        { name: \"FahrspurInnen\u00dcberh\u00f6htEbeneVerschiedeneBreite\", en: \"LaneInsideSuperLayerVaryingWidth\", kat: \"Oberbau und Schichten\", reiter: \"Fahrstreifen\", gruppe: G_STD, palette: \"FahrspurInnen\u00dcberh\u00f6htEbeneVerschiedeneBreite\", form: \"lane\",\n          zweck: \"Dieser Querschnittsbestandteil erstellt eine Querprofildarstellung einer Fahrspur aus mehreren Layern.\",\n          param: \"Seite (Rechts); Dachprofilpunkt auf Innenseite (Nein); Fahrspurbreite (3,6 m); Vorgabe %Neigung (-2,0); Name Belag 1 (BC); Deckschicht Tiefe (0,025 m); Belag2 Name (WMM); Zwischenschicht Tiefe (0,025 m)\",\n          codes: \"Punkt: ETW, Crown, Lane, ETW_Pave1, Crown_Pave1, Lane_Pave1, ETW_Pave2, Crown_Pave2; Verkn\u00fcpfung: Top, Pave, Pave1, Pave2, Tragschicht, Untere Tragschicht; Profilart: Pave1, Pave2, Tragschicht, Untere Tragschicht\",\n          tags: \"auflage breite ebene fahrspur fahrspurinnen\u00fcberh\u00f6htebeneverschiedenebreite innen inside lane laneinsidesuperlayervaryingwidth layer oberbau sanierung schicht super varying verschiedene width \u00fcberh\u00f6ht\",\n          ziele: \"Breite (Versatzziel); H\u00f6he (H\u00f6henziel)\", ueberh: true, massen: true,\n          wann: \"Dieser Querschnittsbestandteil erstellt eine Querprofildarstellung einer Fahrspur aus mehreren Layern.\" },\n        { name: \"B\u00f6schungsfu\u00dfBecken2\", en: \"DaylightBasin2\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungsfu\u00dfBecken2\", form: \"daylight\",\n          zweck: \"Dieser Querschnittsbestandteil \u00e4hnelt einem Querschnittsbestandteil B\u00f6schungsfu\u00dfBecken, weist aber folgende zus\u00e4tzlichen Eigenschaften auf: Die Berme ist bei Auftragssituationen op.\",\n          param: \"Seite (Rechts); B\u00f6schungsfu\u00dfverkn\u00fcpfung (Einbeziehen); Berme (Auslassen); B\u00f6schung (fallend) Neigung (3 ( : 1)); B\u00f6schung (fallend) Breite (1,2 m); Becken Tiefe (0,0); Becken Neigung (4 (:1)); Becken Breite (1,8 m)\",\n          codes: \"Punkt: Graben_Innen, Graben_Au\u00dfen, Anschlusspunkt, Anschlusspunkt_Abtrag, Anschlusspunkt, Anschlusspunkt_Auftrag, B\u00f6schungsfu\u00df, B\u00f6schungsfu\u00df_Einschnitt oder B\u00f6schungsfu\u00df_Damm; Verkn\u00fcpfung: Planung, Planum, B\u00f6schungsfu\u00df, \",\n          tags: \"anbindung basin2 becken2 boeschung b\u00f6schungsfu b\u00f6schungsfu\u00dfbecken2 daylight daylightbasin2 gelaende\",\n          ziele: \"Ziel-DGM (Oberfl\u00e4che)\", ueberh: false, massen: false,\n          wann: \"Dieser Querschnittsbestandteil \u00e4hnelt einem Querschnittsbestandteil B\u00f6schungsfu\u00dfBecken, weist aber folgende zus\u00e4tzlichen Eigenschaften auf: Die Berme ist bei Auftragssituationen op.\" },\n        { name: \"B\u00f6schungmitMehrerenSchnittpunkten\", en: \"DaylightMultiIntercept\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungmitMehrerenSchnittpunkten\", form: \"daylight\",\n          zweck: \"Dieser Querschnittsbestandteil wird verwendet, wenn ein Einschnitt- oder Dammb\u00f6schungsfu\u00df das Ziel-DGM mehr als einmal schneiden kann.\",\n          param: \"Seite (Rechts); Abtrag (4 ( : 1)); Auftrag (4 ( : 1)); Schnittkante Nummer (10); Rundungsoption (Keine); Runden nach (L\u00e4nge); Rundungsparameter; Rundungstessellation (6)\",\n          codes: \"Punkt: Code, Anschlusspunkt Anschlusspunkt_Abtrag oder Anschlusspunkt_Auftrag, B\u00f6schungsfu\u00df B\u00f6schungsfu\u00df_Einschnitt oder B\u00f6schungsfu\u00df_Damm; Verkn\u00fcpfung: Planung Planum B\u00f6schungsfu\u00df B\u00f6schungsfu\u00df_Einschnitt, Planung Planum\",\n          tags: \"anbindung boeschung b\u00f6schungmit b\u00f6schungmitmehrerenschnittpunkten daylight daylightmultiintercept gelaende intercept mehreren multi schnittpunkten\",\n          ziele: \"mehrere Ziel-DGM\", ueberh: false, massen: false,\n          wann: \"Dieser Querschnittsbestandteil wird verwendet, wenn ein Einschnitt- oder Dammb\u00f6schungsfu\u00df das Ziel-DGM mehr als einmal schneiden kann.\" },\n        { name: \"B\u00f6schungZuGrunderwerbslinie\", en: \"DaylightToROW\", kat: \"B\u00f6schung und Anbindung\", reiter: \"B\u00f6schungsfu\u00df\", gruppe: G_STD, palette: \"B\u00f6schungZuGrunderwerbslinie\", form: \"daylight\",\n          zweck: \"Dieser Querschnittsbestandteil f\u00fcgt eine B\u00f6schungsfu\u00dfverkn\u00fcpfung vom Zuordnungspunkt zu einem angegebenen Versatz von der Grunderwerbsliniengrenze auf einem Ziel-DGM ein.\",\n          param: \"Grunderwerbsgrenzen-Versatz von Basislinie (3,0 m); Versatz Anpassung (0,0); Rundungsoption (Keine); Runden nach (L\u00e4nge); Rundungsparameter; Rundungstessellation (6); Belagmaterial platzieren (Keine)\",\n          codes: \"Punkt: Code, Anschlusspunkt Anschlusspunkt_Abtrag oder Anschlusspunkt_Auftrag, B\u00f6schungsfu\u00df B\u00f6schungsfu\u00df_Einschnitt oder B\u00f6schungsfu\u00df_Damm; Verkn\u00fcpfung: Planung Planum B\u00f6schungsfu\u00df B\u00f6schungsfu\u00df_Einschnitt, Planung Planum\",\n          tags: \"anbindung boeschung b\u00f6schung b\u00f6schungzugrunderwerbslinie daylight daylighttorow gelaende grunderwerbslinie row\",\n          ziele: \"Grunderwerbslinie (Versatz\/Achse); Ziel-DGM\", ueberh: false, massen: false,\n          wann: \"Dieser Querschnittsbestandteil f\u00fcgt eine B\u00f6schungsfu\u00dfverkn\u00fcpfung vom Zuordnungspunkt zu einem angegebenen Versatz von der Grunderwerbsliniengrenze auf einem Ziel-DGM ein.\" },\n        { name: \"MittelstreifenKonstanteNeigungMitBetonschutzwand\", en: \"MedianConstantSlopeWithBarrier\", kat: \"Mittelstreifen\", reiter: \"Mittelstreifen\", gruppe: G_STD, palette: \"MittelstreifenKonstanteNeigungMitBetonschutzwand\", form: \"median\",\n          zweck: \"Dieser Querschnittsbestandteil wird verwendet, um an der Mittellinie einen Mittelstreifen mit asymmetrischen Betonschutzw\u00e4nden auf beiden Seiten der Mittellinie und mit einem konis.\",\n          param: \"Mittelstreifen Linke Breite (2,0 m); Mittelstreifen Rechte Breite (2,0 m); Dachprofilpunkt in der Mitte (Nein); Linke Mittelstreifen Querneigung (0%); Rechter Mittelstreifen Querneigung (0%); Betonschutzwandoption (Beidseitig); Betonschutzwand - Breite oben (0,15 m)\",\n          codes: \"Punkt: Crown, Bankettrand, Mittelstreifen, Bankettrand_Deckschicht, Bankettrand_Zwischenschicht, Bankettrand_Tragschicht_Innen; Verkn\u00fcpfung: Planung, Betonschutzwand, Oben, Belag, Pave1, Pave2, Tragschicht; Profilart: Pa\",\n          tags: \"barrier betonschutzwand constant konstante median medianconstantslopewithbarrier mit mittelstreifen mittelstreifenkonstanteneigungmitbetonschutzwand neigung slope with\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil wird verwendet, um an der Mittellinie einen Mittelstreifen mit asymmetrischen Betonschutzw\u00e4nden auf beiden Seiten der Mittellinie und mit einem konis.\" },\n        { name: \"MittelstreifenAbgesenktBankettVerl\u00e4ngert\", en: \"MedianDepressedShoulderExt\", kat: \"Mittelstreifen\", reiter: \"Mittelstreifen\", gruppe: G_STD, palette: \"MittelstreifenAbgesenktBankettVerl\u00e4ngert\", form: \"median\",\n          zweck: \"Dieser Querschnittsbestandteil erstellt eine Querprofildarstellung eines abgesenkten Mittelstreifens mit Innenbanketten unter Verwendung eines verl\u00e4ngerten Abschlusses der unteren.\",\n          param: \"Graben Breite (0,6 m); Graben Neigung (4 : 1); Graben Neigungen Beibehalten (Grabenb\u00f6schungen beibehalten, Graben aus der Mitte verschieben); Mittellinie Drehpunkt? (Drehen um Innenkante der Fahrbahn); Neigungsrichtung des Banketts (Vom Dachprofil); Mittelstreifen Linke Breite (6,6 m); Mittelstreifen Rechte Breite (6,6\",\n          codes: \"Punkt: Code, Wie unten dargestellt; Profilart: Pave1, Pave2, Tragschicht, Untere Tragschicht\",\n          tags: \"abgesenkt bankett depressed ext median mediandepressedshoulderext mittelstreifen mittelstreifenabgesenktbankettverl\u00e4ngert shoulder verl\u00e4ngert\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil erstellt eine Querprofildarstellung eines abgesenkten Mittelstreifens mit Innenbanketten unter Verwendung eines verl\u00e4ngerten Abschlusses der unteren.\" },\n        { name: \"MittelstreifenAbgesenktBankettVert\", en: \"MedianDepressedShoulderVert\", kat: \"Mittelstreifen\", reiter: \"Mittelstreifen\", gruppe: G_STD, palette: \"MittelstreifenAbgesenktBankettVert\", form: \"median\",\n          zweck: \"Dieser Querschnittsbestandteil erstellt eine Querprofildarstellung eines abgesenkten Mittelstreifens mit Innenbanketten unter Verwendung eines vertikalen Abschlusses der unteren Tr.\",\n          param: \"Graben Breite (0,6 m); Graben Neigung (4 : 1); Graben Neigungen Beibehalten (Grabenb\u00f6schungen beibehalten, Graben aus der Mitte verschieben); Mittellinie Drehpunkt? (Drehen um Innenkante der Fahrbahn); Neigungsrichtung des Banketts (Vom Dachprofil); Mittelstreifen Linke Breite (6,6 m); Mittelstreifen Rechte Breite (6,6\",\n          codes: \"Punkt: Code, Bankettrand, Bankettrand_Deckschicht, Bankettrand_Zwischenschicht, Bankettrand_Tragschicht_Innen, Bankettrand_Frostschutz_Innen, Bankettrand_Unbefestigt, L_MitteGraben; Verkn\u00fcpfung: Planung Belag, Planung Pl\",\n          tags: \"abgesenkt bankett depressed median mediandepressedshouldervert mittelstreifen mittelstreifenabgesenktbankettvert shoulder vert\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil erstellt eine Querprofildarstellung eines abgesenkten Mittelstreifens mit Innenbanketten unter Verwendung eines vertikalen Abschlusses der unteren Tr.\" },\n        { name: \"Verkn\u00fcpfungMarkierterPunkt2\", en: \"LinkToMarkedPoint2\", kat: \"Allgemein und Bausteine\", reiter: \"Allgemein\", gruppe: G_STD, palette: \"Verkn\u00fcpfungMarkierterPunkt2\", form: \"marker\",\n          zweck: \"Dieser Querschnittsbestandteil ist ein allgemeines Dienstprogramm, das dem Querschnittsbestandteil AnschlussMarkierterPunkt gleicht und mit dem eine Verkn\u00fcpfung vom Zuordnungspunkt.\",\n          param: \"Markierter Punkt Name (Keine); Verkn\u00fcpfung Codes (Oben, Festpunkt); Ohne Verkn\u00fcpfung (Nein)\",\n          codes: \"siehe Referenz\/Codestilsatz\",\n          tags: \"baustein link linktomarkedpoint2 marked marker markierter point2 punkt2 verknuepfung verkn\u00fcpfung verkn\u00fcpfungmarkierterpunkt2\",\n          ziele: \"keine\", ueberh: false, massen: false,\n          wann: \"Dieser Querschnittsbestandteil ist ein allgemeines Dienstprogramm, das dem Querschnittsbestandteil AnschlussMarkierterPunkt gleicht und mit dem eine Verkn\u00fcpfung vom Zuordnungspunkt.\" },\n        { name: \"BankettMehrereEbenen\", en: \"ShoulderMultiLayer\", kat: \"Bankett\", reiter: \"Bankette\", gruppe: G_STD, palette: \"BankettMehrereEbenen\", form: \"bankett\",\n          zweck: \"Dieser Querschnittsbestandteil f\u00fcgt ein Bankett ein, das Sie zur Steuerung der Querneigung verwenden k\u00f6nnen.\",\n          param: \"Seite (Rechts); Bankett Breite (2,4 m); Erweiterungsbelag 2 (0,05 m); Erweiterungsbelag 3 (0,10 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigungsrichtung des Banketts (Vom Dachprofil); Vorgabebankettneigung (-2,500%); UntereTragschicht B\u00f6schungsfu\u00df Typ (Neigung beibehalten, Breite anpassen)\",\n          codes: \"Punkt: ETW, Anschlusspunkt, Bankettrand_Zwischenschicht, EPS_Belag3, Bankettrand_Tragschicht1, Bankettrand_Tragschicht2, Bankettrand_Tragschicht3, Bankettrand_Untere Tragschicht1; Verkn\u00fcpfung: Oben, SR, Pave2, Pave3, Bas\",\n          tags: \"bankett bankettmehrereebenen ebenen layer mehrere multi schulter shoulder shouldermultilayer\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil f\u00fcgt ein Bankett ein, das Sie zur Steuerung der Querneigung verwenden k\u00f6nnen.\" },\n        { name: \"BankettMehrereEbenenVerschiedeneBreite\", en: \"ShoulderMultiLayerVaryingWidth\", kat: \"Bankett\", reiter: \"Bankette\", gruppe: G_STD, palette: \"BankettMehrereEbenenVerschiedeneBreite\", form: \"bankett\",\n          zweck: \"Dieser Querschnittsbestandteil f\u00fcgt ein Bankett ein, das Sie zur Steuerung der Querneigung verwenden k\u00f6nnen.\",\n          param: \"Seite (Rechts); Bankett Breite (2,4 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigungsrichtung des Banketts (Vom Dachprofil); Vorgabebankettneigung (-6,000%); UntereTragschicht B\u00f6schungsfu\u00df Typ (Neigung beibehalten, Breite anpassen); B\u00f6schungsfu\u00df Neigung (4 ( : 1)); Breite (3 m)\",\n          codes: \"Punkt: ETW, Bankettrand, Bankettrand_Deckschicht, Bankettrand_Zwischenschicht, Bankettrand_Tragschicht1, Bankettrand_Tragschicht2, Bankettrand_Tragschicht3, Bankettrand_Untere Tragschicht1; Verkn\u00fcpfung: Top, Pave, Pave1,\",\n          tags: \"bankett bankettmehrereebenenverschiedenebreite breite ebenen layer mehrere multi schulter shoulder shouldermultilayervaryingwidth varying verschiedene width\",\n          ziele: \"Breite (Versatzziel)\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil f\u00fcgt ein Bankett ein, das Sie zur Steuerung der Querneigung verwenden k\u00f6nnen.\" },\n        { name: \"BankettMehrereOberfl\u00e4chen\", en: \"ShoulderMultiSurface\", kat: \"Bankett\", reiter: \"Bankette\", gruppe: G_STD, palette: \"BankettMehrereOberfl\u00e4chen\", form: \"bankett\",\n          zweck: \"Bankett mit mehreren getrennten Oberfl\u00e4chen (z. B. befestigt und unbefestigt).\",\n          param: \"Seite (Rechts); Fahrbahnbelag 1 Tiefe (0,025 m); Fahrbahnbelag 2 Tiefe (0,025 m); Fahrbahnbelag 3 Tiefe (0,025 m); Fahrbahnbelag 4 Tiefe (0,025 m); Fahrbahnbelag 5 Tiefe (0,025 m); Fahrbahnbelag 6 Tiefe (0,025 m); Fahrbahnbelag 7 Tiefe (0,025 m)\",\n          codes: \"Punkt: ETW, Bankettrand\",\n          tags: \"bankett bankettmehrereoberfl\u00e4chen mehrere multi oberfl\u00e4chen schulter shoulder shouldermultisurface surface\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Bankett mit mehreren getrennten Oberfl\u00e4chen (z. B. befestigt und unbefestigt).\" },\n        { name: \"BankettVerbreiterung\", en: \"ShoulderWidening\", kat: \"Bankett\", reiter: \"Bankette\", gruppe: G_STD, palette: \"BankettVerbreiterung\", form: \"bankett\",\n          zweck: \"Mit diesem Querschnittsbestandteil wird ein Bankett f\u00fcr Verbreiterungen eingef\u00fcgt.\",\n          param: \"Seite (Rechts); Bankett Breite (1,8 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigungsrichtung des Banketts (Vom Dachprofil); Vorgabebankettneigung (- 2,0 %); UntereTragschicht B\u00f6schungsfu\u00df Typ (Neigung beibehalten, Breite anpassen); B\u00f6schungsfu\u00df Neigung (4 ( : 1)); B\u00f6schungsfu\u00df Breite\",\n          codes: \"Punkt: Code, Bankettrand, Bankettrand_Deckschicht, Bankettrand_Zwischenschicht, Bankettrand_Tragschicht_Innen, B\u00f6schungsfu\u00df_Planum; Verkn\u00fcpfung: Top, Pave, Belag, Pave1, Pave2, Tragschicht, Untere Tragschicht, Planum; Pr\",\n          tags: \"bankett bankettverbreiterung schulter shoulder shoulderwidening verbreiterung widening\",\n          ziele: \"Breite (Versatzziel)\", ueberh: false, massen: true,\n          wann: \"Mit diesem Querschnittsbestandteil wird ein Bankett f\u00fcr Verbreiterungen eingef\u00fcgt.\" },\n        { name: \"BankettMitUnterschiedlichemRandabschlussUndPlanumsneigung\", en: \"ShoulderWithSubbaseInterlaced\", kat: \"Bankett\", reiter: \"Bankette\", gruppe: G_STD, palette: \"BankettMitUnterschiedlichemRandabschlussUndPlanumsneigung\", form: \"bankett\",\n          zweck: \"Dieser Querschnittsbestandteil f\u00fcgt ein befestigtes Bankett mit allen Schichten einschlie\u00dflich einer bis zu einem B\u00f6schungsfu\u00dfpunkt erweiterten Planumsneigung ein.\",\n          param: \"Seite (Rechts); Bankett Breite (2,4 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigungsrichtung des Banketts (Vom Dachprofil); Vorgabebankettneigung (-4,0%); UntereTragschicht B\u00f6schungsfu\u00df Typ (Neigung beibehalten, Breite anpassen); B\u00f6schungsfu\u00df Neigung\/Breite (4 ( : 1)); Tragschicht-Querneigung (Nein)\",\n          codes: \"Punkt: Bankettrand, B\u00f6schungsfu\u00df_Planum, Bankettrand_Deckschicht, Bankettrand_Zwischenschicht, Bankettrand_Tragschicht_Innen; Verkn\u00fcpfung: Planung, Pave1, Pave2, Tragschicht, Planum, Untere Tragschicht; Profilart: Benutz\",\n          tags: \"bankett bankettmitunterschiedlichemrandabschlussundplanumsneigung interlaced mit planumsneigung randabschluss schulter shoulder shoulderwithsubbaseinterlaced subbase und unterschiedlichem with\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil f\u00fcgt ein befestigtes Bankett mit allen Schichten einschlie\u00dflich einer bis zu einem B\u00f6schungsfu\u00dfpunkt erweiterten Planumsneigung ein.\" },\n        { name: \"BankettMitUnterschiedlichemRandabschlussUndPlanumsneigungUndMulde\", en: \"ShoulderWithSubbaseInterlacedAndDitch\", kat: \"Bankett\", reiter: \"Bankette\", gruppe: G_STD, palette: \"BankettMitUnterschiedlichemRandabschlussUndPlanumsneigungUndMulde\", form: \"bankett\",\n          zweck: \"Dieser Querschnittsbestandteil f\u00fcgt ein befestigtes Bankett ein, dessen Fahrspurbelag, Basisschicht und untere Tragschicht bis zur Planumsneigung des Banketts verl\u00e4ngert sind.\",\n          param: \"Seite (Rechts); Bankett Breite (2,4 m); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigungsrichtung des Banketts (Vom Dachprofil); Vorgabebankettneigung (-6,0%); Graben Breite (3,00 m); Grabentiefe (0,40 m); Tragschichtb\u00f6schung (2 ( : 1))\",\n          codes: \"Punkt: Bankettrand, B\u00f6schungsfu\u00df_Planum, Bankettrand_Deckschicht, Bankettrand_Zwischenschicht, Bankettrand_Tragschicht_Innen; Verkn\u00fcpfung: Planung, Planum, Untere Tragschicht, Pave1, Pave2, Tragschicht; Profilart: Benutz\",\n          tags: \"and bankett bankettmitunterschiedlichemrandabschlussundplanumsneigungundmulde ditch interlaced mit mulde planumsneigung randabschluss schulter shoulder shoulderwithsubbaseinterlacedandditch subbase und unterschiedlichem with\",\n          ziele: \"Ziel-DGM (f\u00fcr den Graben)\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil f\u00fcgt ein befestigtes Bankett ein, dessen Fahrspurbelag, Basisschicht und untere Tragschicht bis zur Planumsneigung des Banketts verl\u00e4ngert sind.\" },\n        { name: \"StadtBordRinnsteinKehle3\", en: \"UrbanCurbGutterValley3\", kat: \"Bordstein und Rinne\", reiter: \"Bordsteine\", gruppe: G_STD, palette: \"StadtBordRinnsteinKehle3\", form: \"rinne\",\n          zweck: \"Dieser Querschnittsbestandteil f\u00fcgt Verkn\u00fcpfungen f\u00fcr eine Kehlrinne mit Bordstein mit geneigtem Boden und unterer Tragschicht ein.\",\n          param: \"Seite (Rechts); Einf\u00fcgepunkt (Rinnsteinkante); Methode der Rinnsteinneigung (Neigung Fahrspur au\u00dfen); Rinnsteinneigung (- 2%); Neigungsrichtung des Rinnsteins (Vom Dachprofil); Untere Tragschicht Tiefe (1,0 m); UntereTragschicht Verl\u00e4ngerung (0,3 m); Neigungsmethode der Tragschicht (Neigung Fahrspur au\u00dfen)\",\n          codes: \"Punkt: Code, Ansatz, Flowline_Gutter, TopCurb, BackCurb; Verkn\u00fcpfung: Planung, Bordstein, Untere Tragschicht Planum; Profilart: Bordstein, Untere Tragschicht\",\n          tags: \"bord bordstein curb gutter kehle3 rinne rinnstein stadt stadtbordrinnsteinkehle3 urban urbancurbguttervalley3 valley3\",\n          ziele: \"keine\", ueberh: true, massen: true,\n          wann: \"Dieser Querschnittsbestandteil f\u00fcgt Verkn\u00fcpfungen f\u00fcr eine Kehlrinne mit Bordstein mit geneigtem Boden und unterer Tragschicht ein.\" },\n        { name: \"StadtErsetzenBordRinnstein1\", en: \"UrbanReplaceCurbGutter1\", kat: \"Bordstein und Rinne\", reiter: \"Bordsteine\", gruppe: G_STD, palette: \"StadtErsetzenBordRinnstein1\", form: \"bord\",\n          zweck: \"Dieser Querschnittsbestandteil ersetzt einen vorhandenen Bordstein und Stra\u00dfengraben, wobei der Grasstreifen an den vorhandenen Innenrand des Gehwegs gebunden wird.\",\n          param: \"Seite (Rechts); Auskragungspunktversatz von Mittellinie (3,6 m); Gehwegpunkt (Keine); Max. Fr\u00e4sen (0,05 m); Gew\u00fcnschteErh\u00f6hung (0,08 m); Min. Grasstreifenneigung (0,02); Max. Grasstreifenneigung (0,06); Markierung innerer Punkt (Keine)\",\n          codes: \"Punkt: Code, Ansatz, Flowline_Gutter, TopCurb, BackCurb; Verkn\u00fcpfung: Bordstein, Planung, Untere Tragschicht Planum, Planum, Planung, Planum, Grasstreifen; Profilart: Bordstein, Untere Tragschicht\",\n          tags: \"bord bordstein curb ersetzen gutter1 replace rinne rinnstein1 stadt stadtersetzenbordrinnstein1 urban urbanreplacecurbgutter1\",\n          ziele: \"vorhandene Bordanlage\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil ersetzt einen vorhandenen Bordstein und Stra\u00dfengraben, wobei der Grasstreifen an den vorhandenen Innenrand des Gehwegs gebunden wird.\" },\n        { name: \"StadtErsetzenBordRinnstein2\", en: \"UrbanReplaceCurbGutter2\", kat: \"Bordstein und Rinne\", reiter: \"Bordsteine\", gruppe: G_STD, palette: \"StadtErsetzenBordRinnstein2\", form: \"bord\",\n          zweck: \"Dieser Querschnittsbestandteil ersetzt einen vorhandenen Bordstein und Stra\u00dfengraben, wobei der Grasstreifen an den vorhandenen Innenrand des Gehwegs gebunden wird.\",\n          param: \"Seite (Rechts); Auskragungspunktversatz von Mittellinie (3,6 m); Gehwegpunkt (Keine); Markierung innerer Punkt (Keine); Untere Tragschicht Tiefe (0,450 m); UntereTragschicht Verl\u00e4ngerung (0,3 m); Neigungsmethode der Tragschicht (Feste Neigung); UntereTragschicht %Neigung (-2 (%))\",\n          codes: \"Punkt: Code, Ansatz, Flowline_Gutter, TopCurb, BackCurb; Verkn\u00fcpfung: Bordstein, Planung, Untere Tragschicht Planum, Planum, Planung, Planum, Grasstreifen; Profilart: Bordstein, Untere Tragschicht\",\n          tags: \"bord bordstein curb ersetzen gutter2 replace rinne rinnstein2 stadt stadtersetzenbordrinnstein2 urban urbanreplacecurbgutter2\",\n          ziele: \"vorhandene Bordanlage\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil ersetzt einen vorhandenen Bordstein und Stra\u00dfengraben, wobei der Grasstreifen an den vorhandenen Innenrand des Gehwegs gebunden wird.\" },\n        { name: \"StadtErsetzenGehweg\", en: \"UrbanReplaceSidewalk\", kat: \"Gehweg und Seitenraum\", reiter: \"Bordsteine\", gruppe: G_STD, palette: \"StadtErsetzenGehweg\", form: \"gehweg\",\n          zweck: \"Mit diesem Querschnittsbestandteil k\u00f6nnen Sie einen vorhandenen ersetzen.\",\n          param: \"Seite (Rechts); \u00c4u\u00dferer Gehweg markierter Punkt (Keine); Breite (1,5 m); %Neigung (-2%); Tiefe; Markierung innerer Punkt (Keine)\",\n          codes: \"Punkt: Code, Gehweg_Innen, Gehweg_Au\u00dfen; Verkn\u00fcpfung: Planung, Gehweg, Planum; Profilart: Gehweg\",\n          tags: \"ersetzen fussweg gehweg replace sidewalk stadt stadtersetzengehweg urban urbanreplacesidewalk\",\n          ziele: \"vorhandener Gehweg\", ueberh: false, massen: true,\n          wann: \"Mit diesem Querschnittsbestandteil k\u00f6nnen Sie einen vorhandenen ersetzen.\" },\n        { name: \"AbtragFahrbahnbelag\", en: \"StrippingPavement\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AbtragFahrbahnbelag\", form: \"flaeche\",\n          zweck: \"Mit diesem Querschnittsbestandteil k\u00f6nnen Sie eine bestimmte Tiefe f\u00fcr einen vorhandenen Schichtabtrag oben angeben.\",\n          param: \"Atragstiefe (0,05 m); Erweitern auf bestehendes Gel\u00e4nde (Ja); B\u00f6schung (-2 (:1)); B\u00f6schung (steigend) (2 (:1))\",\n          codes: \"Punkt: B\u00f6schungsfu\u00df_Abl\u00f6sung (nur f\u00fcr Fall 1); Verkn\u00fcpfung: Neigung_Abl\u00f6sung (nur f\u00fcr Fall 1), Abl\u00f6sung\",\n          tags: \"abtrag abtragfahrbahnbelag auflage fahrbahnbelag fraesen nivellierung oberbau overlay pavement sanierung schicht stripping strippingpavement\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Mit diesem Querschnittsbestandteil k\u00f6nnen Sie eine bestimmte Tiefe f\u00fcr einen vorhandenen Schichtabtrag oben angeben.\" },\n        { name: \"AbtragMutterboden\", en: \"StrippingTopSoil\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AbtragMutterboden\", form: \"flaeche\",\n          zweck: \"Der Querschnittsbestandteil wird verwendet, um den Abtrag des oberen Mutterbodens bis zu einer bestimmten Tiefe festzulegen.\",\n          param: \"Seite (Rechts); Abtragstiefe (0,05 m); Abtragsbreite (5 m); B\u00f6schung (-2 (:1)); B\u00f6schung (steigend) (2 (:1))\",\n          codes: \"Punkt: B\u00f6schungsfu\u00df_Abl\u00f6sung\",\n          tags: \"abtrag abtragmutterboden auflage fraesen mutterboden nivellierung oberbau overlay sanierung schicht soil stripping strippingtopsoil top\",\n          ziele: \"Bestandsoberfl\u00e4che (DGM)\", ueberh: false, massen: true,\n          wann: \"Der Querschnittsbestandteil wird verwendet, um den Abtrag des oberen Mutterbodens bis zu einer bestimmten Tiefe festzulegen.\" },\n        { name: \"AuflageUnterbrochenZwischenR\u00e4ndern\", en: \"OverlayBrokenBackBetweenEdges\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageUnterbrochenZwischenR\u00e4ndern\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil wird verwendet, um einen vierspurigen 3D-Profilk\u00f6rper mit Dachprofil zwischen die auf den jeweiligen Seiten befindlichen Rinnstein-Auskragungspunkte.\",\n          param: \"Versatz linker Ansatz (-); Versatz rechter Ansatz (6 m); Linker Ansatz \u2013 Markierter Punkt (Keine); Rechter Ansatz \u2013 Markierter Punkt (Keine); Minimale Auflage Tiefe (0,1 m und 0,); Innere Min. %-Neigung (-1%); Innere Max. %-Neigung (-4%)\",\n          codes: \"Punkt: Code, ETW, Fahrspurrand_Au\u00dfen_Auflage, Crown, Fahrspurrand_Innen_Auflage, FahrspurBruch, FahrspurBruch_Auflage; Verkn\u00fcpfung: Top, Pave, Auflage; Profilart: Auflage\",\n          tags: \"auflage auflageunterbrochenzwischenr\u00e4ndern back between broken edges fraesen nivellierung oberbau overlay overlaybrokenbackbetweenedges r\u00e4ndern sanierung schicht unterbrochen zwischen\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil wird verwendet, um einen vierspurigen 3D-Profilk\u00f6rper mit Dachprofil zwischen die auf den jeweiligen Seiten befindlichen Rinnstein-Auskragungspunkte.\" },\n        { name: \"AuflageUnterbrochenOberfl\u00e4che\u00dcberRinnsteine\", en: \"OverlayBrokenBackOverGutters\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageUnterbrochenOberfl\u00e4che\u00dcberRinnsteine\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil wird verwendet, um einen vierspurigen 3D-Profilk\u00f6rper zwischen Stra\u00dfengraben (zwischen Flusslinien) auf beiden Seiten aufzulegen.\",\n          param: \"Versatz linker Rinnstein (6 m); Versatz rechter Rinnstein (6 m); Linker Rinnstein \u2013 Markierter Punkt (Keine); Rechter Rinnstein \u2013 Markierter Punkt (Keine); Minimale Auflage Tiefe (0,1 m und 0,); Innere Min. %-Neigung (-1%); Innere Max. %-Neigung (-4%)\",\n          codes: \"Punkt: Code, ETW, Fahrspurrand_Au\u00dfen_Auflage, Crown, Crown_Overlay, FahrspurBruch, FahrspurBruch_Auflage; Verkn\u00fcpfung: Oben, Belag, Auflage; Profilart: Auflage\",\n          tags: \"auflage auflageunterbrochenoberfl\u00e4che\u00fcberrinnsteine back broken fraesen gutters nivellierung oberbau oberfl\u00e4che over overlay overlaybrokenbackovergutters rinnsteine sanierung schicht unterbrochen \u00fcber\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil wird verwendet, um einen vierspurigen 3D-Profilk\u00f6rper zwischen Stra\u00dfengraben (zwischen Flusslinien) auf beiden Seiten aufzulegen.\" },\n        { name: \"AuflageDachprofilZwischenR\u00e4nder\", en: \"OverlayCrownBetweenEdges\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageDachprofilZwischenR\u00e4nder\", form: \"flaeche\",\n          zweck: \"Auflage mit Dachprofil zwischen den R\u00e4ndern.\",\n          param: \"Versatz linker Rand (3,6 m und); Versatz rechter Rand (3,6 m und); Linker Rand \u2013 Markierter Punkt (Keine); Rechter Rand \u2013 Markierter Punkt (Keine); Dachprofil H\u00f6he (0,1 m und 0,); Min. %-Neigung (-1%); Max. %-Neigung (-3%)\",\n          codes: \"Punkt: Code, ETW, Fahrspurrand_Au\u00dfen_Auflage, Crown, Fahrspurrand_Innen_Auflage; Verkn\u00fcpfung: Top, Pave, Auflage; Profilart: Auflage\",\n          tags: \"auflage auflagedachprofilzwischenr\u00e4nder between crown dachprofil edges fraesen nivellierung oberbau overlay overlaycrownbetweenedges r\u00e4nder sanierung schicht zwischen\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Auflage mit Dachprofil zwischen den R\u00e4ndern.\" },\n        { name: \"AuflageDachprofilMit0%Querneigung\", en: \"OverlayLevelCrown\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageDachprofilMit0%Querneigung\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil \u00fcberlagert eine vorhandene Stra\u00dfe mit Dachprofil (je nach Erfordernis mit einer zus\u00e4tzlichen Nivellierungsschicht \u00fcber dem bestehenden Gel\u00e4nde).\",\n          param: \"Dachprofilversatz (0,000 m); Scheitel - L\u00e4ngsschnitt-Optionen verwenden (Minimale Nivellierungstiefe); Zu entwerfende Fahrstreifenbreite entspricht der bestehenden Fahrstreifenbreite (Nein); Innenkante des vorhandenen Fahrstreifens links (0,000 m); Innenkante des vorhandenen Fahrstreifens rechts (0,000 m); Au\u00dfenkante d\",\n          codes: \"siehe Referenz\/Codestilsatz\",\n          tags: \"auflage auflagedachprofilmit0%querneigung crown dachprofil fraesen level mit0 nivellierung oberbau overlay overlaylevelcrown querneigung sanierung schicht\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil \u00fcberlagert eine vorhandene Stra\u00dfe mit Dachprofil (je nach Erfordernis mit einer zus\u00e4tzlichen Nivellierungsschicht \u00fcber dem bestehenden Gel\u00e4nde).\" },\n        { name: \"AuflageNivellierung1Fahrstreifen1Seite\", en: \"OverlayLevel1Lane1Side\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageNivellierung1Fahrstreifen1Seite\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil \u00fcberlagert eine Seite einer vorhandenen Stra\u00dfe (je nach Erfordernis mit einer zus\u00e4tzlichen Nivellierungsschicht).\",\n          param: \"Seite (Rechts); Auflage Tiefe (0,300 m); Zu entwerfende Fahrstreifenbreite entspricht der bestehenden Fahrstreifenbreite (Nein); Innenkante des vorhandenen Fahrstreifens (0,000 m); Au\u00dfenkante des vorhandenen Fahrstreifens (12,000 m); Auflagenneigungsoptionen (\u00dcbergangsneigung); Ideale Querneigung (-2,00 %); Fahrstreife\",\n          codes: \"siehe Referenz\/Codestilsatz\",\n          tags: \"auflage auflagenivellierung1fahrstreifen1seite fahrstreifen1 fraesen lane1 level1 nivellierung nivellierung1 oberbau overlay overlaylevel1lane1side sanierung schicht seite side\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil \u00fcberlagert eine Seite einer vorhandenen Stra\u00dfe (je nach Erfordernis mit einer zus\u00e4tzlichen Nivellierungsschicht).\" },\n        { name: \"AuflageMittelstreifenAsymmetrisch\", en: \"OverlayMedianAsymmetrical\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageMittelstreifenAsymmetrisch\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil verbreitert die vorhandene baulich getrennte Stra\u00dfe, indem ab den Fahrspurr\u00e4ndern nach innen \u00fcber einen abgesenkten Mittelstreifen verl\u00e4ngert wird.\",\n          param: \"Auflage Tiefe (0,100 m); Linker Einf\u00fcgeversatz (0,0); Linker Innerer Probeversatz (0,0); Linker \u00c4u\u00dferer Probeversatz (0,0); Rechter Einf\u00fcgeversatz (0,0); Rechter Innerer Probeversatz (0,0); Rechter \u00c4u\u00dferer Probeversatz (0,0)\",\n          codes: \"Punkt: Code, ETW, Fahrspurrand_Au\u00dfen_Auflage; Verkn\u00fcpfung: Planung, Auflage; Profilart: Auflage, Betonschutzwand\",\n          tags: \"asymmetrical asymmetrisch auflage auflagemittelstreifenasymmetrisch fraesen median mittelstreifen nivellierung oberbau overlay overlaymedianasymmetrical sanierung schicht\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil verbreitert die vorhandene baulich getrennte Stra\u00dfe, indem ab den Fahrspurr\u00e4ndern nach innen \u00fcber einen abgesenkten Mittelstreifen verl\u00e4ngert wird.\" },\n        { name: \"AuflageMittelstreifenSymmetrisch\", en: \"OverlayMedianSymmetrical\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageMittelstreifenSymmetrisch\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil verbreitert die vorhandene baulich getrennte Stra\u00dfe, indem ab den Fahrspurr\u00e4ndern nach innen \u00fcber einen abgesenkten Mittelstreifen verl\u00e4ngert wird.\",\n          param: \"Auflage Tiefe (0,100 m); Neigung Toleranz (5%); Linker Einf\u00fcgeversatz (0,0); Linker Innerer Probeversatz (0,0); Linker \u00c4u\u00dferer Probeversatz (0,0); Rechter Einf\u00fcgeversatz (0,0); Rechter Innerer Probeversatz (0,0)\",\n          codes: \"Punkt: Code, ETW, Fahrspurrand_Au\u00dfen_Auflage; Verkn\u00fcpfung: Planung, Auflage; Profilart: Auflage, Betonschutzwand\",\n          tags: \"auflage auflagemittelstreifensymmetrisch fraesen median mittelstreifen nivellierung oberbau overlay overlaymediansymmetrical sanierung schicht symmetrical symmetrisch\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil verbreitert die vorhandene baulich getrennte Stra\u00dfe, indem ab den Fahrspurr\u00e4ndern nach innen \u00fcber einen abgesenkten Mittelstreifen verl\u00e4ngert wird.\" },\n        { name: \"AuflageGl\u00e4ttungDachprofil\", en: \"OverlayMillCrown\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageGl\u00e4ttungDachprofil\", form: \"flaeche\",\n          zweck: \"Mit diesem Querschnittsbestandteil wird auf einer vorhandenen Stra\u00dfe mit Dachprofil eine Auflageschicht hinzugef\u00fcgt (je nach Erfordernis mit einer zus\u00e4tzlichen Fr\u00e4sschicht).\",\n          param: \"Dachprofilversatz (0,000 m); Scheitel - L\u00e4ngsschnitt-Optionen verwenden (Minimale Fr\u00e4stiefe); Zu entwerfende Fahrstreifenbreite entspricht der bestehenden Fahrstreifenbreite (Nein); Innenkante des vorhandenen Fahrstreifens links (0,000 m); Innenkante des vorhandenen Fahrstreifens rechts (0,000 m); Au\u00dfenkante des vorhan\",\n          codes: \"Punkt: Code, Crown, KDA, Crown_Overlay, KDA_Auflage, KDA_Fr\u00e4sen, Crown_offset; Verkn\u00fcpfung: Oben, Belag, Auflage, Fr\u00e4sen; Profilart: Auflage, Fr\u00e4sen\",\n          tags: \"auflage auflagegl\u00e4ttungdachprofil crown dachprofil fraesen gl\u00e4ttung mill nivellierung oberbau overlay overlaymillcrown sanierung schicht\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Mit diesem Querschnittsbestandteil wird auf einer vorhandenen Stra\u00dfe mit Dachprofil eine Auflageschicht hinzugef\u00fcgt (je nach Erfordernis mit einer zus\u00e4tzlichen Fr\u00e4sschicht).\" },\n        { name: \"AuflageGl\u00e4ttung1Fahrstreifen1Seite\", en: \"OverlayMill1Lane1Side\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageGl\u00e4ttung1Fahrstreifen1Seite\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil \u00fcberlagert eine Seite einer vorhandenen Stra\u00dfe (je nach Erfordernis mit einer zus\u00e4tzlichen Fr\u00e4sschicht).\",\n          param: \"Seite (Rechts); Zu entwerfende Fahrstreifenbreite entspricht der bestehenden Fahrstreifenbreite (Nein); Innenkante des vorhandenen Fahrstreifens (0,000 m); Au\u00dfenkante des vorhandenen Fahrstreifens (0,000 m); Auflage Tiefe (0,300 m); Auflagenneigungsoptionen (Benutzerdefiniert ohne Flattern); Ideale Querneigung (-2,00 %\",\n          codes: \"siehe Referenz\/Codestilsatz\",\n          tags: \"auflage auflagegl\u00e4ttung1fahrstreifen1seite fahrstreifen1 fraesen gl\u00e4ttung1 lane1 mill1 nivellierung oberbau overlay overlaymill1lane1side sanierung schicht seite side\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil \u00fcberlagert eine Seite einer vorhandenen Stra\u00dfe (je nach Erfordernis mit einer zus\u00e4tzlichen Fr\u00e4sschicht).\" },\n        { name: \"AuflageGl\u00e4ttungNivellierung1\", en: \"OverlayMillAndLevel1\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageGl\u00e4ttungNivellierung1\", form: \"flaeche\",\n          zweck: \"Kombinierte Fr\u00e4s- und Nivellierungs-Auflage (Variante 1).\",\n          param: \"Innerer Probepunkt Versatz (0,0); \u00c4u\u00dferer Probepunkt Versatz (0,0); Innerer Abschlusspunkt (0,0); \u00c4u\u00dferer Abschlusspunkt (0,0); Auflagenneigungsoptionen (\u00dcbergangsneigung.); Vorgabeneigung (- 2,0 %); Neigung Toleranz (0,5%)\",\n          codes: \"siehe Referenz\/Codestilsatz\",\n          tags: \"and auflage auflagegl\u00e4ttungnivellierung1 fraesen gl\u00e4ttung level1 mill nivellierung nivellierung1 oberbau overlay overlaymillandlevel1 sanierung schicht\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Kombinierte Fr\u00e4s- und Nivellierungs-Auflage (Variante 1).\" },\n        { name: \"AuflageGl\u00e4ttungNivellierung2\", en: \"OverlayMillAndLevel2\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageGl\u00e4ttungNivellierung2\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil f\u00fcgt auf einer vorhandenen Stra\u00dfe mit Dachprofil eine Auflageschicht, je nach Erfordernis mit einer zus\u00e4tzlichen Nivellierungs- oder Fr\u00e4sschicht, hin.\",\n          param: \"Dachprofil Punkt Versatz (0,0); Linker Probepunkt Versatz (0,0); Rechter Probepunkt Versatz (0,0); Linker Abschlusspunkt (0,0); Rechter Abschlusspunkt (0,0); Linke Auflagenneigungsoptionen (\u00dcbergangsneigung); Linke Vorgabe-Auflagenneigung (- 2,0 %)\",\n          codes: \"Punkt: Code, Crown, KDA, Crown_Overlay, KDA_Auflage; Verkn\u00fcpfung: Oben, Belag, Auflage, Nivellierung Fr\u00e4sen; Profilart: Auflage, Nivellierung, Fr\u00e4sen\",\n          tags: \"and auflage auflagegl\u00e4ttungnivellierung2 fraesen gl\u00e4ttung level2 mill nivellierung nivellierung2 oberbau overlay overlaymillandlevel2 sanierung schicht\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil f\u00fcgt auf einer vorhandenen Stra\u00dfe mit Dachprofil eine Auflageschicht, je nach Erfordernis mit einer zus\u00e4tzlichen Nivellierungs- oder Fr\u00e4sschicht, hin.\" },\n        { name: \"AuflageGl\u00e4ttungNivellierung1Fahrstreifen1Seite\", en: \"OverlayMillLevel1Lane1Side\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageGl\u00e4ttungNivellierung1Fahrstreifen1Seite\", form: \"flaeche\",\n          zweck: \"Mit diesem Querschnittsbestandteil wird an einer Seite einer vorhandenen Stra\u00dfe eine Auflageschicht hinzugef\u00fcgt (je nach Erfordernis mit einer zus\u00e4tzlichen Nivellierungs- oder Fr\u00e4s.\",\n          param: \"Seite (Links); Zu entwerfende Fahrstreifenbreite entspricht der bestehenden Fahrstreifenbreite (Nein); Innenkante des vorhandenen Fahrstreifens (0,000 m); Au\u00dfenkante des vorhandenen Fahrstreifens (0,000 m); Auflage Tiefe (0,300 m); Auflagenneigungsoptionen (Benutzerdefiniert ohne Flattern); Ideale Querneigung (-2,00 %)\",\n          codes: \"siehe Referenz\/Codestilsatz\",\n          tags: \"auflage auflagegl\u00e4ttungnivellierung1fahrstreifen1seite fahrstreifen1 fraesen gl\u00e4ttung lane1 level1 mill nivellierung nivellierung1 oberbau overlay overlaymilllevel1lane1side sanierung schicht seite side\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Mit diesem Querschnittsbestandteil wird an einer Seite einer vorhandenen Stra\u00dfe eine Auflageschicht hinzugef\u00fcgt (je nach Erfordernis mit einer zus\u00e4tzlichen Nivellierungs- oder Fr\u00e4s.\" },\n        { name: \"AuflageGl\u00e4ttungNivellierungDachprofil\", en: \"OverlayMillLevelCrown\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageGl\u00e4ttungNivellierungDachprofil\", form: \"flaeche\",\n          zweck: \"Fr\u00e4s- und Nivellierungs-Auflage mit Dachprofil.\",\n          param: \"Dachprofilversatz (0,000 m); Zu entwerfende Fahrstreifenbreite entspricht der bestehenden Fahrstreifenbreite (Nein); Innenkante des vorhandenen Fahrstreifens links (0,000 m); Innenkante des vorhandenen Fahrstreifens rechts (0,000 m); Au\u00dfenkante des vorhandenen Fahrstreifens links (12,000 m); Au\u00dfenkante des vorhandenen \",\n          codes: \"Punkt: Code, Crown, KDA, Crown_Overlay, KDA_Auflage, Crown_Milling, KDA_Fr\u00e4sen; Verkn\u00fcpfung: Oben, Belag, Auflage, Nivellierung, Fr\u00e4sung, Bezugsh\u00f6he, Ebene, Fr\u00e4sen; Profilart: Auflage, Nivellierung, Fr\u00e4sen\",\n          tags: \"auflage auflagegl\u00e4ttungnivellierungdachprofil crown dachprofil fraesen gl\u00e4ttung level mill nivellierung oberbau overlay overlaymilllevelcrown sanierung schicht\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Fr\u00e4s- und Nivellierungs-Auflage mit Dachprofil.\" },\n        { name: \"AuflageParabolisch\", en: \"OverlayParabolic\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageParabolisch\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil f\u00fcgt parabolische Fahrspuren ein, die Deckschicht, Fahrbahnbelag und untere Tragschicht f\u00fcr st\u00e4dtische, parabolische Fahrspuren zwischen bekannten Au.\",\n          param: \"Versatz linker Ansatz (7,2 m); Versatz rechter Ansatz (7,2 m); Linker Ansatz \u2013 Markierter Punkt (Keine); Rechter Ansatz \u2013 Markierter Punkt (Keine); Dachprofil H\u00f6he (0,10 m); Min. %-Neigung (-1%); Max. %-Neigung (-4%)\",\n          codes: \"Punkt: Code, ETW, Fahrspurrand_Au\u00dfen_Auflage, Crown, Crown_Overlay; Verkn\u00fcpfung: Oben, Belag, Auflage; Profilart: Auflage\",\n          tags: \"auflage auflageparabolisch fraesen nivellierung oberbau overlay overlayparabolic parabolic parabolisch sanierung schicht\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil f\u00fcgt parabolische Fahrspuren ein, die Deckschicht, Fahrbahnbelag und untere Tragschicht f\u00fcr st\u00e4dtische, parabolische Fahrspuren zwischen bekannten Au.\" },\n        { name: \"AuflageAufweitungVonBordstein\", en: \"OverlayWidenFromCurb\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageAufweitungVonBordstein\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil wird verwendet, um eine Seite der vorhandenen Stra\u00dfe zu \u00fcberlagern und der Kante mindestens eine Fahrspur hinzuzuf\u00fcgen, die um die R\u00fcckf\u00fchrung eines.\",\n          param: \"Seite (Links\/Rechts); Aufweitungsbreite (3,6 m); Auflage Breite (3,6 m); Neigung (Verh\u00e4ltnis) (- 2%); Deckschicht Tiefe (0,025 m); Zwischenschicht Tiefe (0,025 m); Basis Tiefe (0,100 m); Untere Tragschicht Tiefe (0,300 m)\",\n          codes: \"Punkt: ETW, ETW_Pave1, ETW_Pave2, Fahrspurrand_Au\u00dfen_Tragschicht, Fahrspurrand_Au\u00dfen_Frostschutzschicht; Verkn\u00fcpfung: Top, Pave, Auflage, Pave1, Pave2, Tragschicht, Untere Tragschicht, Planum; Profilart: Auflage, Pave1, \",\n          tags: \"auflage auflageaufweitungvonbordstein aufweitung bordstein curb fraesen from nivellierung oberbau overlay overlaywidenfromcurb sanierung schicht von widen\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil wird verwendet, um eine Seite der vorhandenen Stra\u00dfe zu \u00fcberlagern und der Kante mindestens eine Fahrspur hinzuzuf\u00fcgen, die um die R\u00fcckf\u00fchrung eines.\" },\n        { name: \"AuflageAufweitungGleicheNeigung1\", en: \"OverlayWidenMatchSlope1\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageAufweitungGleicheNeigung1\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil \u00fcberlagert eine Seite einer vorhandenen Stra\u00dfe und f\u00fcgt der Kante eine oder mehrere Fahrspuren hinzu, wobei die vorhandenen Fahrspurneigungen ber\u00fccks.\",\n          param: \"Probepunkt Versatz (0,0); Einf\u00fcgepunkt Versatz (0,0); Auflage Tiefe (0,100 m); Breite (3,6 m); Deckschicht Tiefe (0,025 m); Zwischenschicht Tiefe (0,025 m); Basis Tiefe (0,100 m)\",\n          codes: \"Punkt: Code, ETW, ETW_Pave1, ETW_Pave2, Fahrspurrand_Au\u00dfen_Tragschicht, Fahrspurrand_Au\u00dfen_Frostschutzschicht; Verkn\u00fcpfung: Top, Pave, Auflage, Pave1, Pave2, Tragschicht, Untere Tragschicht, Planum; Profilart: Auflage, P\",\n          tags: \"auflage auflageaufweitunggleicheneigung1 aufweitung fraesen gleiche match neigung1 nivellierung oberbau overlay overlaywidenmatchslope1 sanierung schicht slope1 widen\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil \u00fcberlagert eine Seite einer vorhandenen Stra\u00dfe und f\u00fcgt der Kante eine oder mehrere Fahrspuren hinzu, wobei die vorhandenen Fahrspurneigungen ber\u00fccks.\" },\n        { name: \"AuflageAufweitungGleicheNeigung2\", en: \"OverlayWidenMatchSlope2\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageAufweitungGleicheNeigung2\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil \u00fcberlagert eine Stra\u00dfe mit Pultprofil und f\u00fcgt den linken und rechten R\u00e4ndern eine oder mehrere Fahrspuren hinzu, wobei die vorhandene Fahrspurneigun.\",\n          param: \"Linker Einf\u00fcge Punkt Versatz (0,0); Rechter Einf\u00fcge Punkt Versatz (0,0); Auflage Tiefe (0,100 m); Breite links (3,6 m); Breite rechts (3,6 m); Deckschicht Tiefe (0,025 m); Zwischenschicht Tiefe (0,025 m)\",\n          codes: \"Punkt: Code, ETW, ETW_Pave1, ETW_Pave2, Fahrspurrand_Au\u00dfen_Tragschicht, Fahrspurrand_Au\u00dfen_Frostschutzschicht; Verkn\u00fcpfung: Top, Pave, Auflage, Pave1, Pave2, Tragschicht, Untere Tragschicht, Planum; Profilart: Auflage, P\",\n          tags: \"auflage auflageaufweitunggleicheneigung2 aufweitung fraesen gleiche match neigung2 nivellierung oberbau overlay overlaywidenmatchslope2 sanierung schicht slope2 widen\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil \u00fcberlagert eine Stra\u00dfe mit Pultprofil und f\u00fcgt den linken und rechten R\u00e4ndern eine oder mehrere Fahrspuren hinzu, wobei die vorhandene Fahrspurneigun.\" },\n        { name: \"AuflageAufweitungMit\u00dcberh\u00f6hung1\", en: \"OverlayWidenWithSuper1\", kat: \"Oberbau und Schichten\", reiter: \"nur Katalog-Browser (Sanierung)\", gruppe: G_STD, palette: \"AuflageAufweitungMit\u00dcberh\u00f6hung1\", form: \"flaeche\",\n          zweck: \"Dieser Querschnittsbestandteil \u00fcberlagert eine Seite einer vorhandenen Stra\u00dfe und f\u00fcgt der Kante eine oder mehrere Fahrspuren hinzu, wobei die f\u00fcr die Au\u00dfenfahrspur definierte \u00dcber.\",\n          param: \"Festpunkt-Versatz (0,0); Einf\u00fcge Punkt Versatz (0,0); Auflage Tiefe (0,100 m); Breite (3,6 m); Deckschicht Tiefe (0,025 m); Zwischenschicht Tiefe (0,025 m); Basis Tiefe (0,100 m)\",\n          codes: \"Punkt: Code, ETW, ETW_Pave1, ETW_Pave2, Fahrstreifenrand_Au\u00dfen_Tragschicht, Fahrstreifenrand_Au\u00dfen_Frostschutzschicht; Verkn\u00fcpfung: Oben, Belag, Auflage, Pave1, Pave2, Tragschicht, Untere Tragschicht, Planum; Profilart: \",\n          tags: \"auflage auflageaufweitungmit\u00fcberh\u00f6hung1 aufweitung fraesen mit nivellierung oberbau overlay overlaywidenwithsuper1 sanierung schicht super1 widen with \u00fcberh\u00f6hung1\",\n          ziele: \"vorhandene Fahrbahnoberfl\u00e4che\", ueberh: false, massen: true,\n          wann: \"Dieser Querschnittsbestandteil \u00fcberlagert eine Seite einer vorhandenen Stra\u00dfe und f\u00fcgt der Kante eine oder mehrere Fahrspuren hinzu, wobei die f\u00fcr die Au\u00dfenfahrspur definierte \u00dcber.\" },\n        { name: \"Allgemeine Trapez-Form\", en: \"ShapeTrapezoidal\", kat: \"Allgemein und Bausteine\", reiter: \"Basis\", gruppe: G_STD, palette: \"Allgemeine Trapez-Form\", form: \"flaeche\",\n          zweck: \"Allgemeine geschlossene Trapez-Form als Profilart, frei \u00fcber Breiten und H\u00f6he bema\u00dfbar. F\u00fcr eigene Formen und F\u00fcllfl\u00e4chen im Querschnitt, die kein Standardbauteil abbildet.\",\n          param: \"Seite (Rechts); Neigung unten (0,042); Tiefe au\u00dfen (0,500); Neigung oben (-0,020); Breite (2,4 m); Vorgabequerneigung (-2,0%); \u00dcberh\u00f6hungsneigung verwenden (Nein); Neigungsrichtung (Vom Dachprofil)\",\n          codes: \"Punkt: Code Innen Oben, Code Au\u00dfen Oben, Code Innen Unten, Code Au\u00dfen Unten; Verkn\u00fcpfung: Verkn\u00fcpfungscode Oben, Verkn\u00fcpfungscode Unten; Profilart: Profilcode\",\n          tags: \"allgemeine trapez form trapezform shapetrapezoidal allgemein baustein flaeche profilart shape geschlossen basis fuellflaeche generisch\",\n          ziele: \"keine\", ueberh: false, massen: true,\n          wann: \"Wenn du eine einfache geschlossene Trapez-\/Vieleckform als Materialfl\u00e4che brauchst, f\u00fcr die es keinen spezialisierten Bestandteil gibt.\" },\n    ];\n\n    \/\/ ---- Archetyp (form) je Eintrag, nach Name (Name ist eindeutig; en ist es bei RStO nicht) ----\n    var FORM = {\n        \"Fahrstreifen mit \u00dcberh\u00f6hung (au\u00dfen oder innen)\": \"lane\",\n        \"Fahrstreifen (einfach)\": \"lane\",\n        \"Fahrstreifen mit \u00dcbergang \/ Verziehung\": \"lane\",\n        \"Fahrstreifen, \u00dcberh\u00f6hung au\u00dfen\": \"lane\",\n        \"Fahrstreifen, \u00dcberh\u00f6hung innen\": \"lane\",\n        \"Fahrstreifen mit Verbreiterung (Aufweitung)\": \"lane\",\n        \"Fahrstreifen mit parabolischer W\u00f6lbung\": \"lane\",\n        \"Fahrstreifen zur Fahrbahnmitte (Anschluss an Krone)\": \"lane\",\n        \"Stadtbord mit Rinne (allgemein)\": \"bord\",\n        \"Muldenbord \/ Flachrinne (flache Sohle)\": \"rinne\",\n        \"Muldenbord \/ Flachrinne (geneigte Sohle)\": \"rinne\",\n        \"Bordstein (einfach)\": \"bord\",\n        \"Gehweg (einfach)\": \"gehweg\",\n        \"Gehweg (Stadt, mit Gr\u00fcnstreifen\/Bankettbreiten)\": \"gehweg\",\n        \"Bankett (einfach, mit Belag und Tragschicht)\": \"bankett\",\n        \"Bankett, alle Schichten bis zur B\u00f6schung verl\u00e4ngert\": \"bankett\",\n        \"Bankett, Frostschutz bis zur B\u00f6schung verl\u00e4ngert\": \"bankett\",\n        \"Bankett mit vertikalem Schichtabschluss\": \"bankett\",\n        \"Mittelstreifen, muldenf\u00f6rmig (vertieft)\": \"median\",\n        \"Mittelstreifen, erh\u00f6ht mit konstanter Neigung\": \"median\",\n        \"Mittelstreifen, niveaugleich (optional Betonschutzwand)\": \"median\",\n        \"Erh\u00f6hter Mittelstreifen mit Krone (\u00fcber zwei Punkte)\": \"median\",\n        \"B\u00f6schung mit Einschnittgraben und Anbindung\": \"daylight\",\n        \"Gel\u00e4ndeanbindung (allgemein, viele Regeln)\": \"daylight\",\n        \"Gel\u00e4ndeanbindung (Standard, mit Mutterbodenabtrag)\": \"daylight\",\n        \"Gel\u00e4ndeanbindung mit Bermen (Stufenb\u00f6schung)\": \"daylight\",\n        \"Anbindung mit Mindestbreite\": \"daylight\",\n        \"Anbindung mit Maximalbreite\": \"daylight\",\n        \"Anbindung mit Mindestabstand\": \"daylight\",\n        \"Anbindung mit Maximalabstand\": \"daylight\",\n        \"Anbindung bis zu festem Abstand\": \"daylight\",\n        \"Anbindung an mehrere Ziel-DGM\": \"daylight\",\n        \"Anbindung im Fels (steiler Abtrag)\": \"daylight\",\n        \"Anbindung innerhalb der Grenze (ROW)\": \"daylight\",\n        \"Anbindung als R\u00fcckhaltebecken\": \"daylight\",\n        \"Mehrschichtiger Fahrstreifen, \u00dcberh\u00f6hung au\u00dfen\": \"lane\",\n        \"Mehrschichtiger Fahrstreifen, \u00dcberh\u00f6hung innen\": \"lane\",\n        \"Mehrschichtiger Fahrstreifen mit variabler Schichtbreite\": \"lane\",\n        \"Einzelschicht generisch aufbauen (Schicht \u00fcber Verkn\u00fcpfung)\": \"linie\",\n        \"Verkn\u00fcpfung: Breite und Neigung\": \"linie\",\n        \"Verkn\u00fcpfung: Neigung bis Oberfl\u00e4che (Daylight-Baustein)\": \"linie\",\n        \"Verkn\u00fcpfung: Abstand und Neigung\": \"linie\",\n        \"Verkn\u00fcpfung: Abstand und H\u00f6he\": \"linie\",\n        \"Verkn\u00fcpfung: Abstand entlang Oberfl\u00e4che\": \"linie\",\n        \"Verkn\u00fcpfung: Neigung bis Zielh\u00f6he\": \"linie\",\n        \"Verkn\u00fcpfung: Neigungen zwischen Punkten\": \"linie\",\n        \"Verkn\u00fcpfung: Neigung mit vertikalem Versatz\": \"linie\",\n        \"Verkn\u00fcpfung: senkrecht (vertikal)\": \"linie\",\n        \"Verkn\u00fcpfung: Mehrfach-Polylinie\": \"linie\",\n        \"Anschluss an Markierungspunkt\": \"marker\",\n        \"Anschluss an Fahrbahnmarkierung\": \"marker\",\n        \"Markierungspunkt setzen (codierter Punkt)\": \"marker\",\n        \"Grundst\u00fccksgef\u00e4lle (Baufeld)\": \"linie\",\n        \"Bedingter Auf- oder Abtrag\": \"linie\",\n        \"Bedingtes horizontales Ziel\": \"linie\",\n        \"Oberbau au\u00dferorts (RStO 12\/24)\": \"flaeche\",\n        \"Oberbau innerorts (RStO 12\/24)\": \"flaeche\",\n        \"Ungebundene Tragschicht (Frostschutz- bzw. Schottertragschicht)\": \"flaeche\",\n        \"Hochbord (Randbefestigung)\": \"bord\",\n        \"Rundbord\": \"bord\",\n        \"Tiefbord \/ Flachbord\": \"bord\",\n        \"Muldenrinne \/ Mulde\": \"rinne\",\n        \"Kasten- \/ Pendelrinne\": \"rinne\",\n        \"Pflasterrinne\": \"rinne\",\n        \"Bankettbefestigung (RStO)\": \"bankett\",\n        \"Schrammbord \/ Randbalken\": \"bord\",\n        \"Regelquerschnitt RQ (fertiger Querschnitt)\": \"flaeche\"\n    };\n    \/\/ Empfohlen: 1-2 Standard-Bestandteile je Kategorie (RStO bewusst ohne, installationsabh\u00e4ngig)\n    var EMPF = {\n        \"Allgemeiner Fahrstreifenaufbau (mehrschichtig)\": 1,\n        \"Fahrstreifen mit \u00dcberh\u00f6hung (au\u00dfen oder innen)\": 1,\n        \"Fahrstreifen (einfach)\": 1,\n        \"Stadtbord mit Rinne (allgemein)\": 1,\n        \"Bordstein (einfach)\": 1,\n        \"Gehweg (einfach)\": 1,\n        \"Bankett (einfach, mit Belag und Tragschicht)\": 1,\n        \"Mittelstreifen, erh\u00f6ht mit konstanter Neigung\": 1,\n        \"B\u00f6schung mit Einschnittgraben und Anbindung\": 1,\n        \"Gel\u00e4ndeanbindung (allgemein, viele Regeln)\": 1,\n        \"Mehrschichtiger Fahrstreifen, \u00dcberh\u00f6hung au\u00dfen\": 1,\n        \"Verkn\u00fcpfung: Breite und Neigung\": 1,\n        \"Verkn\u00fcpfung: Neigung bis Oberfl\u00e4che (Daylight-Baustein)\": 1\n    };\n    \/\/ Zusatz-Synonyme (Alltagsw\u00f6rter, ASCII-Varianten) fuer die Suche\n    var TAGADD = {\n        \"Fahrstreifen mit \u00dcberh\u00f6hung (au\u00dfen oder innen)\": \"asphaltschicht deckschicht tragschicht fahrbahndecke strassenbelag\",\n        \"Stadtbord mit Rinne (allgemein)\": \"bordkante strassenrinne randeinfassung\",\n        \"Bordstein (einfach)\": \"randstein bordkante\",\n        \"Gehweg (einfach)\": \"gehsteig fussweg radweg trottoir\",\n        \"Mittelstreifen, niveaugleich (optional Betonschutzwand)\": \"leitplanke schutzplanke betonschutzwand\",\n        \"B\u00f6schung mit Einschnittgraben und Anbindung\": \"damm hang strassenboeschung gel\u00e4ndeanschluss\",\n        \"Ungebundene Tragschicht (Frostschutz- bzw. Schottertragschicht)\": \"frostschutz schotter kies mineralgemisch\",\n        \"Markierungspunkt setzen (codierter Punkt)\": \"marker codepoint punkt setzen\",\n        \"Verkn\u00fcpfung: Neigung bis Oberfl\u00e4che (Daylight-Baustein)\": \"gel\u00e4ndeanschluss boeschungsfuss anbindung\"\n    };\n    \/\/ ---- Zone (Einbauort in der Stra\u00dfe) je Kategorie; RStO erbt die Zone des Bauteiltyps ----\n    var KAT_ZONE = {\n        \"Fahrbahn\": \"fahrbahn\",\n        \"Bordstein und Rinne\": \"rand\",\n        \"Gehweg und Seitenraum\": \"seitenraum\",\n        \"Bankett\": \"rand\",\n        \"Mittelstreifen\": \"mitte\",\n        \"B\u00f6schung und Anbindung\": \"anschluss\",\n        \"Oberbau und Schichten\": \"fahrbahn\",\n        \"Allgemein und Bausteine\": \"frei\",\n        \"Country Kit (RStO)\": \"frei\"\n    };\n    var ZONE = {\n        \"Oberbau au\u00dferorts (RStO 12\/24)\": \"fahrbahn\",\n        \"Oberbau innerorts (RStO 12\/24)\": \"fahrbahn\",\n        \"Ungebundene Tragschicht (Frostschutz- bzw. Schottertragschicht)\": \"fahrbahn\",\n        \"Hochbord (Randbefestigung)\": \"rand\",\n        \"Rundbord\": \"rand\",\n        \"Tiefbord \/ Flachbord\": \"rand\",\n        \"Muldenrinne \/ Mulde\": \"rand\",\n        \"Kasten- \/ Pendelrinne\": \"rand\",\n        \"Pflasterrinne\": \"rand\",\n        \"Bankettbefestigung (RStO)\": \"rand\",\n        \"Schrammbord \/ Randbalken\": \"rand\",\n        \"Regelquerschnitt RQ (fertiger Querschnitt)\": \"frei\",\n        \"Verkn\u00fcpfung: Neigung bis Oberfl\u00e4che (Daylight-Baustein)\": \"anschluss\"\n    };\n    \/\/ Anwendungsbereich (Dom\u00e4ne) je Kategorie; neue Eintraege tragen ihr dom selbst\n    var DOM_BY_KAT = {\n        \"Fahrbahn\": \"Stra\u00dfe\", \"Bordstein und Rinne\": \"Stra\u00dfe\", \"Gehweg und Seitenraum\": \"Stra\u00dfe\",\n        \"Bankett\": \"Stra\u00dfe\", \"Mittelstreifen\": \"Stra\u00dfe\", \"B\u00f6schung und Anbindung\": \"Stra\u00dfe\",\n        \"Oberbau und Schichten\": \"Stra\u00dfe\", \"Allgemein und Bausteine\": \"Allgemein\",\n        \"Country Kit (RStO)\": \"Country Kit\"\n    };\n    var FORM_BY_KAT = { \"Br\u00fccke\": \"bridge\", \"Schiene\": \"rail\", \"Graben\": \"trench\", \"St\u00fctzwand\": \"wall\" };\n    for (var fi = 0; fi < DATA.length; fi++) {\n        var de = DATA[fi];\n        de.form = de.form ? de.form : (FORM[de.name] ? FORM[de.name] : (FORM_BY_KAT[de.kat] ? FORM_BY_KAT[de.kat] : \"flaeche\"));\n        de.dom = de.dom ? de.dom : (DOM_BY_KAT[de.kat] ? DOM_BY_KAT[de.kat] : \"Allgemein\");\n        de.empf = EMPF[de.name] === 1;\n        de.zone = ZONE[de.name] ? ZONE[de.name] : (KAT_ZONE[de.kat] ? KAT_ZONE[de.kat] : \"frei\");\n        if (TAGADD[de.name]) { de.tags = de.tags + \" \" + TAGADD[de.name]; }\n    }\n\n    \/\/ ---- Prozedurale SVG-Engine (portiert aus querschnittsaufbau-werkstatt.html) ----\n    \/\/ Palette identisch zur Schwester-Werkstatt, hartkodierte Hex (Safari versteht keine\n    \/\/ CSS-Variablen in SVG-Attributen). Fuer das Tool-Paar gilt die Werkstatt-Palette.\n    var C = {\n        primary: \"#3f5f75\", primaryDark: \"#2c4a5e\", primaryDeep: \"#1e3548\",\n        muted: \"#64748b\", faint: \"#94a3b8\", border: \"#d9e4ec\",\n        ground: \"#3f5f75\", plan: \"#059669\", planDeep: \"#15803d\",\n        slope: \"#e8913a\", slopeDeep: \"#b45309\", shapeFill: \"#f6dcc0\",\n        codePoint: \"#7c3aed\", codePointDeep: \"#6d28d9\"\n    };\n    var SVGNS = \"http:\/\/www.w3.org\/2000\/svg\";\n    function el(tag, attrs) {\n        var n = document.createElementNS(SVGNS, tag);\n        var k;\n        for (k in (attrs || {})) { if (Object.prototype.hasOwnProperty.call(attrs, k)) { n.setAttribute(k, attrs[k]); } }\n        return n;\n    }\n    function ptStr(pts) { return pts.map(function(p) { return p.x.toFixed(1) + \",\" + p.y.toFixed(1); }).join(\" \"); }\n    function poly(g, pts, attrs) { g.appendChild(el(\"polyline\", Object.assign({ points: ptStr(pts) }, attrs || {}))); }\n    function fillPoly(g, pts, attrs) { g.appendChild(el(\"polygon\", Object.assign({ points: ptStr(pts) }, attrs || {}))); }\n    function line(g, x1, y1, x2, y2, attrs) { g.appendChild(el(\"line\", Object.assign({ x1: x1, y1: y1, x2: x2, y2: y2 }, attrs || {}))); }\n    function circle(g, x, y, r, attrs) { g.appendChild(el(\"circle\", Object.assign({ cx: x, cy: y, r: r }, attrs || {}))); }\n    function svgText(g, x, y, s, attrs) {\n        var t = el(\"text\", Object.assign({ x: x, y: y, \"font-family\": \"inherit\" }, attrs || {}));\n        t.textContent = s;\n        g.appendChild(t);\n        return t;\n    }\n    function dotMark(g, x, y, color, r) { circle(g, x, y, r || 3, { fill: \"#fff\", stroke: color, \"stroke-width\": 1.6 }); }\n    function lbl(g, x, y, s, color, anchor) {\n        svgText(g, x, y, s, { \"font-size\": 6.6, fill: color || C.muted, \"text-anchor\": anchor || \"middle\", \"font-weight\": 700 });\n    }\n    \/\/ Breiten-Pfeil: Pfeilspitzen als eigene <polygon> (kein <marker>\/url(#id) => keine ID-Kollision bei vielen SVGs)\n    function dimArrow(g, x1, x2, y, label) {\n        line(g, x1 + 3, y, x2 - 3, y, { stroke: C.faint, \"stroke-width\": 0.8 });\n        fillPoly(g, [{ x: x1, y: y }, { x: x1 + 4, y: y - 2.3 }, { x: x1 + 4, y: y + 2.3 }], { fill: C.faint });\n        fillPoly(g, [{ x: x2, y: y }, { x: x2 - 4, y: y - 2.3 }, { x: x2 - 4, y: y + 2.3 }], { fill: C.faint });\n        if (label) { lbl(g, (x1 + x2) \/ 2, y - 2.6, label, C.muted); }\n    }\n\n    \/\/ ---- Archetyp-Bibliothek: kompaktes Schnittbild je Bauteiltyp (viewBox 0 0 132 84) ----\n    \/\/ Jedes zeigt: Einf\u00fcgepunkt (dotMark), Linie (Kontur) vs. Fl\u00e4che (gold gef\u00fcllt),\n    \/\/ Breite (dimArrow) und Neigung. Werte illustrativ, keine exakten Zahlen.\n    var ARCH = {\n        linie: function(g) {\n            var a = { x: 18, y: 32 }, b = { x: 106, y: 55 };\n            line(g, a.x, a.y, b.x, b.y, { stroke: C.primary, \"stroke-width\": 2.6, \"stroke-linecap\": \"round\" });\n            dotMark(g, a.x, a.y, C.primaryDeep, 3.2);\n            lbl(g, a.x, a.y - 6, \"Einf\u00fcgepunkt\", C.muted, \"start\");\n            lbl(g, 84, 38, \"Neigung\", C.primary, \"start\");\n            dimArrow(g, a.x, b.x, 72, \"Breite\");\n        },\n        flaeche: function(g) {\n            var x0 = 20, x1 = 108;\n            fillPoly(g, [{ x: x0, y: 32 }, { x: x1, y: 27 }, { x: x1, y: 45 }, { x: x0, y: 50 }], { fill: C.shapeFill, stroke: C.slope, \"stroke-width\": 1.4, \"stroke-linejoin\": \"round\" });\n            dotMark(g, x0, 41, C.primaryDeep, 3.2);\n            lbl(g, x0, 24, \"Einf\u00fcgepunkt\", C.muted, \"start\");\n            lbl(g, 64, 42, \"Fl\u00e4che\", C.slopeDeep);\n            dimArrow(g, x0, x1, 72, \"Breite\");\n        },\n        lane: function(g) {\n            var cx = 16, cy = 24, ex = 104;\n            fillPoly(g, [{ x: cx, y: cy }, { x: ex, y: 40 }, { x: ex, y: 48 }, { x: cx, y: 32 }], { fill: C.shapeFill, stroke: C.slope, \"stroke-width\": 1.3, \"stroke-linejoin\": \"round\" });\n            dotMark(g, cx, cy, C.primaryDeep, 3.2);\n            lbl(g, cx, cy - 6, \"Einf\u00fcgepunkt\", C.muted, \"start\");\n            lbl(g, 92, 30, \"Neigung\", C.primary, \"start\");\n            dimArrow(g, cx, ex, 72, \"Breite\");\n        },\n        bord: function(g) {\n            line(g, 10, 50, 28, 50, { stroke: C.primary, \"stroke-width\": 1.8, \"stroke-linecap\": \"round\" });\n            fillPoly(g, [{ x: 28, y: 50 }, { x: 28, y: 30 }, { x: 46, y: 28 }, { x: 58, y: 30 }, { x: 58, y: 50 }], { fill: C.shapeFill, stroke: C.slope, \"stroke-width\": 1.3, \"stroke-linejoin\": \"round\" });\n            dotMark(g, 28, 50, C.primaryDeep, 3.2);\n            lbl(g, 28, 61, \"Einf\u00fcgepunkt\", C.muted, \"start\");\n            lbl(g, 66, 34, \"H\u00f6he\", C.slopeDeep, \"start\");\n            dimArrow(g, 28, 58, 74, \"Breite\");\n        },\n        rinne: function(g) {\n            poly(g, [{ x: 16, y: 30 }, { x: 52, y: 56 }, { x: 66, y: 56 }, { x: 102, y: 30 }], { fill: \"none\", stroke: C.primary, \"stroke-width\": 2.2, \"stroke-linejoin\": \"round\", \"stroke-linecap\": \"round\" });\n            dotMark(g, 16, 30, C.primaryDeep, 3.2);\n            dotMark(g, 59, 56, C.slope, 2.6);\n            lbl(g, 16, 24, \"Einf\u00fcgepunkt\", C.muted, \"start\");\n            lbl(g, 71, 50, \"Flowline\", C.slopeDeep, \"start\");\n            dimArrow(g, 16, 102, 74, \"Breite\");\n        },\n        bankett: function(g) {\n            var ax = 18, ay = 30, bx = 84;\n            fillPoly(g, [{ x: ax, y: ay }, { x: bx, y: 44 }, { x: bx, y: 51 }, { x: ax, y: 37 }], { fill: C.shapeFill, stroke: C.slope, \"stroke-width\": 1.3, \"stroke-linejoin\": \"round\" });\n            dotMark(g, ax, ay, C.primaryDeep, 3.2);\n            dotMark(g, bx, 44, C.slope, 2.4);\n            lbl(g, ax, ay - 6, \"Einf\u00fcgepunkt\", C.muted, \"start\");\n            lbl(g, 52, 30, \"Neigung\", C.primary, \"start\");\n            dimArrow(g, ax, bx, 70, \"Breite\");\n        },\n        gehweg: function(g) {\n            line(g, 18, 46, 18, 36, { stroke: C.primary, \"stroke-width\": 1.6 });\n            line(g, 18, 36, 26, 36, { stroke: C.primary, \"stroke-width\": 1.6 });\n            fillPoly(g, [{ x: 26, y: 36 }, { x: 104, y: 40 }, { x: 104, y: 47 }, { x: 26, y: 43 }], { fill: C.shapeFill, stroke: C.slope, \"stroke-width\": 1.3, \"stroke-linejoin\": \"round\" });\n            dotMark(g, 26, 36, C.primaryDeep, 3.2);\n            lbl(g, 28, 30, \"Einf\u00fcgepunkt\", C.muted, \"start\");\n            lbl(g, 66, 60, \"Gehweg\", C.slopeDeep);\n            dimArrow(g, 26, 104, 72, \"Breite\");\n        },\n        median: function(g) {\n            line(g, 8, 50, 40, 50, { stroke: C.primary, \"stroke-width\": 1.8, \"stroke-linecap\": \"round\" });\n            line(g, 92, 50, 124, 50, { stroke: C.primary, \"stroke-width\": 1.8, \"stroke-linecap\": \"round\" });\n            fillPoly(g, [{ x: 40, y: 50 }, { x: 52, y: 36 }, { x: 66, y: 32 }, { x: 80, y: 36 }, { x: 92, y: 50 }], { fill: C.shapeFill, stroke: C.slope, \"stroke-width\": 1.3, \"stroke-linejoin\": \"round\" });\n            dotMark(g, 40, 50, C.primaryDeep, 3.2);\n            lbl(g, 66, 22, \"Mittelstreifen\", C.slopeDeep);\n            lbl(g, 8, 60, \"Einf\u00fcgepunkt\", C.muted, \"start\");\n            dimArrow(g, 40, 92, 72, \"Breite\");\n        },\n        daylight: function(g) {\n            line(g, 14, 26, 30, 26, { stroke: C.plan, \"stroke-width\": 2.4, \"stroke-linecap\": \"round\" });\n            line(g, 46, 58, 120, 64, { stroke: C.ground, \"stroke-width\": 2, \"stroke-linecap\": \"round\" });\n            line(g, 30, 26, 74, 58, { stroke: C.slope, \"stroke-width\": 2.6, \"stroke-linecap\": \"round\" });\n            dotMark(g, 30, 26, C.primaryDeep, 3.2);\n            dotMark(g, 74, 58, C.slope, 2.6);\n            lbl(g, 32, 20, \"Einf\u00fcgepunkt\", C.muted, \"start\");\n            lbl(g, 44, 40, \"n:1\", C.slopeDeep, \"start\");\n            lbl(g, 98, 74, \"Ziel-DGM\", C.primary);\n        },\n        marker: function(g) {\n            line(g, 24, 52, 62, 42, { stroke: C.primary, \"stroke-width\": 2, \"stroke-linecap\": \"round\" });\n            dotMark(g, 24, 52, C.primaryDeep, 3);\n            circle(g, 66, 40, 5.2, { fill: \"#fff\", stroke: C.codePoint, \"stroke-width\": 2.2 });\n            line(g, 66, 34, 66, 46, { stroke: C.codePoint, \"stroke-width\": 1.2 });\n            line(g, 60, 40, 72, 40, { stroke: C.codePoint, \"stroke-width\": 1.2 });\n            lbl(g, 66, 20, \"Markierungspunkt\", C.codePointDeep);\n            lbl(g, 76, 44, \"Punktcode\", C.codePointDeep, \"start\");\n            lbl(g, 24, 64, \"Einf\u00fcgepunkt\", C.muted, \"start\");\n        },\n        bridge: function(g) {\n            fillPoly(g, [{ x: 14, y: 30 }, { x: 118, y: 30 }, { x: 118, y: 38 }, { x: 14, y: 38 }], { fill: C.shapeFill, stroke: C.slope, \"stroke-width\": 1.2 });\n            poly(g, [{ x: 34, y: 38 }, { x: 44, y: 58 }, { x: 88, y: 58 }, { x: 98, y: 38 }], { fill: \"none\", stroke: C.primary, \"stroke-width\": 1.6, \"stroke-linejoin\": \"round\" });\n            dotMark(g, 66, 30, C.primaryDeep, 3);\n            lbl(g, 66, 24, \"Br\u00fcckendeck\", C.slopeDeep);\n            lbl(g, 66, 68, \"Hohlkasten\", C.primary);\n        },\n        rail: function(g) {\n            fillPoly(g, [{ x: 30, y: 44 }, { x: 102, y: 44 }, { x: 116, y: 60 }, { x: 16, y: 60 }], { fill: C.shapeFill, stroke: C.slope, \"stroke-width\": 1.2, \"stroke-linejoin\": \"round\" });\n            line(g, 40, 44, 92, 44, { stroke: C.primaryDeep, \"stroke-width\": 2.2 });\n            line(g, 50, 39, 50, 44, { stroke: C.primary, \"stroke-width\": 2.4 });\n            line(g, 82, 39, 82, 44, { stroke: C.primary, \"stroke-width\": 2.4 });\n            dotMark(g, 66, 44, C.primaryDeep, 3);\n            lbl(g, 66, 34, \"Gleis\", C.primary);\n            lbl(g, 66, 70, \"Schotter\", C.slopeDeep);\n        },\n        trench: function(g) {\n            fillPoly(g, [{ x: 24, y: 28 }, { x: 44, y: 62 }, { x: 88, y: 62 }, { x: 108, y: 28 }], { fill: C.shapeFill, stroke: C.slope, \"stroke-width\": 1.2, \"stroke-linejoin\": \"round\" });\n            circle(g, 66, 54, 6.5, { fill: \"#fff\", stroke: C.primary, \"stroke-width\": 1.8 });\n            dotMark(g, 24, 28, C.primaryDeep, 3);\n            lbl(g, 24, 22, \"Einf\u00fcgepunkt\", C.muted, \"start\");\n            lbl(g, 62, 40, \"Verf\u00fcllung\", C.slopeDeep);\n            lbl(g, 88, 56, \"Rohr\", C.primary, \"start\");\n        },\n        wall: function(g) {\n            fillPoly(g, [{ x: 46, y: 20 }, { x: 58, y: 20 }, { x: 58, y: 52 }, { x: 80, y: 52 }, { x: 80, y: 62 }, { x: 46, y: 62 }], { fill: C.shapeFill, stroke: C.slope, \"stroke-width\": 1.2, \"stroke-linejoin\": \"round\" });\n            line(g, 30, 32, 46, 32, { stroke: C.ground, \"stroke-width\": 1.6 });\n            line(g, 34, 42, 46, 42, { stroke: C.ground, \"stroke-width\": 1.4 });\n            dotMark(g, 52, 20, C.primaryDeep, 3);\n            lbl(g, 52, 14, \"Einf\u00fcgepunkt\", C.muted);\n            lbl(g, 92, 44, \"Wand\", C.slopeDeep, \"start\");\n            lbl(g, 62, 70, \"Fundament\", C.slopeDeep);\n        }\n    };\n\n    \/\/ ---- Suche: Umlaut-\/ss-Normalisierung fuer haystack UND Suchwoerter ----\n    function norm(s) {\n        return String(s == null ? \"\" : s).toLowerCase()\n            .split(\"\u00df\").join(\"ss\")\n            .split(\"\u00e4\").join(\"ae\")\n            .split(\"\u00f6\").join(\"oe\")\n            .split(\"\u00fc\").join(\"ue\");\n    }\n    \/\/ Gewichtete Suchfelder: ein Treffer im Namen zaehlt mehr als einer in den Tags,\n    \/\/ der wiederum mehr als einer irgendwo in der Beschreibung. \"gruppe\" ist bewusst\n    \/\/ draussen (sonst traefe \"metrisch\"\/\"civil\" jeden Eintrag).\n    var FIELDS = [\n        [\"name\", 10], [\"palette\", 7], [\"en\", 7], [\"tags\", 5],\n        [\"kat\", 4], [\"reiter\", 4], [\"zweck\", 3],\n        [\"param\", 2], [\"codes\", 2], [\"wann\", 2], [\"ziele\", 2], [\"alt\", 2]\n    ];\n    \/\/ Funktionswoerter: nie als Flexions-Praefixbasis verwenden und als Suchwoerter\n    \/\/ ignorieren (solange ein Inhaltswort uebrig bleibt) - sonst matcht \"unterbau\"\n    \/\/ ueber das Wort \"unter\" in einem Namen.\n    var STOP = { \"unter\": 1, \"ueber\": 1, \"nach\": 1, \"beim\": 1, \"eine\": 1, \"einen\": 1, \"einer\": 1, \"einem\": 1,\n        \"dem\": 1, \"den\": 1, \"der\": 1, \"die\": 1, \"das\": 1, \"mit\": 1, \"ohne\": 1, \"zur\": 1, \"zum\": 1,\n        \"auf\": 1, \"aus\": 1, \"fuer\": 1, \"oder\": 1, \"und\": 1, \"von\": 1, \"bis\": 1, \"als\": 1,\n        \"ist\": 1, \"sind\": 1, \"wird\": 1, \"kann\": 1, \"beide\": 1, \"alle\": 1 };\n\n    function fieldTexts(d) {\n        if (!d._ft) {\n            d._ft = [];\n            for (var i = 0; i < FIELDS.length; i++) {\n                var rawStr = (d[FIELDS[i][0]] == null ? \"\" : String(d[FIELDS[i][0]]));\n                var t = norm(rawStr);\n                \/\/ CamelCase-Zerlegung: \"AllgemeinerFahrstreifenAufbau\" -> zus\u00e4tzliche Tokens allgemeiner\/fahrstreifen\/aufbau,\n                \/\/ damit auch Wortteile und Beugungen (Flexion) der zusammengeschriebenen Namen treffen.\n                var camel = norm(rawStr.replace(\/([a-z\u00e4\u00f6\u00fc\u00df])([A-Z\u00c4\u00d6\u00dc])\/g, \"$1 $2\"));\n                var toks = t.split(\/[^a-z0-9]+\/).filter(function(x) { return x.length > 0; });\n                var ct = camel.split(\/[^a-z0-9]+\/).filter(function(x) { return x.length > 0; });\n                for (var j = 0; j < ct.length; j++) { if (toks.indexOf(ct[j]) === -1) { toks.push(ct[j]); } }\n                d._ft.push({ w: FIELDS[i][1], t: t, toks: toks });\n            }\n        }\n        return d._ft;\n    }\n    \/\/ Score eines Suchworts gegen einen Eintrag: bestes Feld gewinnt. Teilstring voll,\n    \/\/ Flexions-Praefix (\"allgemeiner\" trifft \"allgemein\", max. 3 Endungszeichen) zu 90 %.\n    function scoreWord(d, w) {\n        var ft = fieldTexts(d), best = 0;\n        for (var i = 0; i < ft.length; i++) {\n            var f = ft[i];\n            if (f.t.indexOf(w) !== -1) { if (f.w > best) { best = f.w; } continue; }\n            if (w.length >= 5) {\n                for (var k = 0; k < f.toks.length; k++) {\n                    var t = f.toks[k];\n                    if (STOP[t] === 1) { continue; }\n                    if (t.length >= 4) {\n                        if (w.indexOf(t) === 0) {\n                            var dd = w.length - t.length;\n                            if (dd >= 1) { if (dd <= 3) { var v = f.w * 0.9; if (v > best) { best = v; } break; } }\n                        }\n                    }\n                }\n            }\n        }\n        return best;\n    }\n    \/\/ Synonym-Expansion (Vokabular-Schicht): Synonymtreffer leicht abgewertet (x0.8).\n    function scoreWordSyn(d, w) {\n        var s = scoreWord(d, w);\n        var syn = SYN[w];\n        if (syn) {\n            var ex = syn.split(\" \");\n            for (var e = 0; e < ex.length; e++) { var v = scoreWord(d, ex[e]) * 0.8; if (v > s) { s = v; } }\n        }\n        return s;\n    }\n\n    \/\/ Synonym-\/Vokabular-Schicht: Alltagssprache, Schreibvarianten und Fachsynonyme werden\n    \/\/ auf die im Katalog vorhandenen Begriffe erweitert. Schl\u00fcssel und Werte sind bereits\n    \/\/ normalisiert (ss\/ae\/oe\/ue, klein). Ein Suchwort trifft, wenn es ODER eine seiner\n    \/\/ Erweiterungen im Bestandteil vorkommt. So findet \"erdplanum\" das Planum, \"l-stein\"\n    \/\/ die St\u00fctzwand, \"sickerleitung\" die Rigole, \"widerlager\" die Br\u00fccke usw.\n    var SYN = {\n        \"sanierung\": \"auflage overlay\",\n        \"saniert\": \"auflage overlay\",\n        \"fraesen\": \"auflage overlay\",\n        \"fraesung\": \"auflage overlay\",\n        \"abfraesen\": \"auflage overlay fraesen\",\n        \"overlay\": \"auflage\",\n        \"nivellierung\": \"auflage overlay glaettung\",\n        \"nivellieren\": \"nivellierung auflage overlay glaettung\",\n        \"glaetten\": \"glaettung fraesen auflage overlay\",\n        \"verbreitern\": \"verbreiterung aufweitung\",\n        \"aufweiten\": \"aufweitung verbreiterung\",\n        \"ausgleichsschicht\": \"nivellierung auflage overlay\",\n        \"oberboden\": \"mutterboden stripping\",\n        \"humus\": \"mutterboden stripping\",\n        \"krone\": \"dachprofil crown\",\n        \"gewoelbt\": \"dachprofil parabolisch\",\n        \"woelbung\": \"dachprofil parabolisch\",\n        \"trapezform\": \"trapez shape\",\n        \"schichten\": \"ebenen schicht mehrschichtig\",\n        \"ebenen\": \"schichten schicht mehrschichtig\",\n        \"gleis\": \"schiene bahn\",\n        \"erdplanum\": \"planum unterbau\",\n        \"strassenaufbau\": \"fahrbahnaufbau oberbau schichtaufbau\",\n        \"asphaltaufbau\": \"fahrbahnaufbau oberbau asphalt\",\n        \"asphaltschicht\": \"asphalt belag deckschicht\",\n        \"asphaltdecke\": \"asphalt belag deckschicht\",\n        \"unterbau\": \"frostschutz tragschicht planum\",\n        \"kies\": \"frostschutz schottertragschicht schotter\",\n        \"mineralgemisch\": \"frostschutz schottertragschicht\",\n        \"kantstein\": \"bordstein bord\",\n        \"randstein\": \"bordstein bord\",\n        \"bordkante\": \"bordstein bord\",\n        \"hochbordstein\": \"hochbord bord\",\n        \"regenrinne\": \"rinne muldenrinne\",\n        \"entwaesserungsrinne\": \"rinne muldenrinne\",\n        \"gehsteig\": \"gehweg\",\n        \"trottoir\": \"gehweg\",\n        \"buergersteig\": \"gehweg\",\n        \"fussweg\": \"gehweg\",\n        \"hang\": \"boeschung\",\n        \"gelaendeanschluss\": \"anbindung boeschungsfuss daylight\",\n        \"boeschungsfuss\": \"daylight anbindung\",\n        \"sickerleitung\": \"sickergraben rigole draenage rohrgraben\",\n        \"drainage\": \"draenage sickergraben rigole\",\n        \"draenung\": \"draenage sickergraben rigole\",\n        \"versickerung\": \"rigole sickergraben\",\n        \"leitwand\": \"betonschutzwand schutzwand\",\n        \"betonleitwand\": \"betonschutzwand\",\n        \"schallschutzwand\": \"laermschutzwand\",\n        \"laermschutz\": \"laermschutzwand\",\n        \"lstein\": \"stuetzwand\",\n        \"l-stein\": \"stuetzwand\",\n        \"stuetzmauer\": \"stuetzwand\",\n        \"natursteinmauer\": \"bruchstein stuetzwand\",\n        \"referenzpunkt\": \"markierungspunkt bezugspunkt marker\",\n        \"bezugspunkt\": \"markierungspunkt marker\",\n        \"codepunkt\": \"markierungspunkt marker\",\n        \"schotterbett\": \"schotter schotteroberbau\",\n        \"gleisbett\": \"schotter gleis\",\n        \"bahndamm\": \"gleis\",\n        \"widerlager\": \"bruecke hohlkasten\",\n        \"ueberfuehrung\": \"bruecke hohlkasten\",\n        \"viadukt\": \"bruecke hohlkasten\",\n        \"busbucht\": \"verbreiterung aufweitung\",\n        \"haltebucht\": \"verbreiterung aufweitung\",\n        \"parkstreifen\": \"verbreiterung fahrstreifen\",\n        \"kurvenaufweitung\": \"verbreiterung aufweitung\",\n        \"fahrspur\": \"fahrstreifen fahrbahn\"\n    };\n\n    var KAT_KEY = {\n        \"Fahrbahn\": \"Fahrbahn\",\n        \"Bordstein und Rinne\": \"Bord\",\n        \"Gehweg und Seitenraum\": \"Gehweg\",\n        \"Bankett\": \"Bankett\",\n        \"Mittelstreifen\": \"Median\",\n        \"B\u00f6schung und Anbindung\": \"Boeschung\",\n        \"Oberbau und Schichten\": \"Oberbau\",\n        \"Allgemein und Bausteine\": \"Allgemein\",\n        \"Country Kit (RStO)\": \"Rsto\",\n        \"Br\u00fccke\": \"Bruecke\",\n        \"Schiene\": \"Schiene\",\n        \"Graben\": \"Graben\",\n        \"St\u00fctzwand\": \"Stuetzwand\"\n    };\n\n    var ARROW = String.fromCharCode(8250); \/\/ Chevron als Trenner, kein rohes Sonderzeichen im Quelltext\n\n    function findWeg(item) {\n        var s = \"Werkzeugpaletten \u00f6ffnen (Strg+3) \" + ARROW + \" Gruppe \u201e\" + item.gruppe + \"\u201c \" + ARROW +\n                \" Reiter \u201e\" + item.reiter + \"\u201c \" + ARROW + \" Werkzeug anklicken \" + ARROW + \" Symbolpunkt in der Zeichnung setzen.\";\n        if (item.cc === true) {\n            s += \" Hinweis: separater Country-Kit-Download je Version; ohne Kit \" + (item.alt ? item.alt : \"\u00fcber die Allgemein-Bausteine\") + \".\";\n        }\n        return s;\n    }\n\n    \/\/ ===================== SUCHE, ANWENDUNGSBEREICH-VORFILTER, VERGLEICH =====================\n    function byName(n) { for (var i = 0; i < DATA.length; i++) { if (DATA[i].name === n) { return DATA[i]; } } return null; }\n    function drawMini(host, item) {\n        var svg = el('svg', { viewBox: '0 0 132 84', preserveAspectRatio: 'xMidYMid meet', role: 'img', 'aria-hidden': 'true' });\n        var g = el('g', {});\n        svg.appendChild(g); host.appendChild(svg);\n        (ARCH[item.form] ? ARCH[item.form] : ARCH.flaeche)(g, item);\n    }\n\n    \/\/ ---- EN-Namen kopieren ----\n    function fallbackCopy(t) {\n        try {\n            var ta = document.createElement('textarea');\n            ta.value = t; ta.style.position = 'fixed'; ta.style.opacity = '0';\n            document.body.appendChild(ta); ta.focus(); ta.select();\n            document.execCommand('copy'); document.body.removeChild(ta);\n        } catch (e) {}\n    }\n    function copyText(t, btn, restore) {\n        function done() { if (btn) { btn.textContent = 'Kopiert!'; window.setTimeout(function() { btn.textContent = restore; }, 1400); } }\n        if (navigator.clipboard ? navigator.clipboard.writeText : null) {\n            navigator.clipboard.writeText(t).then(done, function() { fallbackCopy(t); done(); });\n        } else { fallbackCopy(t); done(); }\n    }\n\n    \/\/ ---- Anwendungsbereich (Domaene) Vorfilter ----\n    var DOM_ORDER = [\"Stra\u00dfe\", \"Allgemein\", \"Country Kit\", \"Graben\", \"St\u00fctzwand\", \"Br\u00fccke\", \"Schiene\"];\n    var DOM_LABEL = { \"Stra\u00dfe\": \"Stra\u00dfe\", \"Allgemein\": \"Allgemein \/ Beschriftung\", \"Country Kit\": \"Country Kit (RStO)\", \"Graben\": \"Graben und Rohr\", \"St\u00fctzwand\": \"St\u00fctzwand\", \"Br\u00fccke\": \"Br\u00fccke\", \"Schiene\": \"Schiene\" };\n    function defaultDoms() { return { \"Stra\u00dfe\": true, \"Allgemein\": true, \"Country Kit\": true, \"Graben\": false, \"St\u00fctzwand\": false, \"Br\u00fccke\": false, \"Schiene\": false }; }\n    var activeDoms = defaultDoms();\n    \/\/ Eigenschafts-Facetten (explizite Filter, gelten auch waehrend der Suche)\n    var activeFacets = { ziel: false, ueberh: false, massen: false };\n    \/\/ Familien-Filter (Klick auf das Kategorie-Badge einer Karte)\n    var activeFam = null;\n    function facetOk(d) {\n        if (activeFacets.ziel === true) { if (!(d.ziele ? d.ziele.indexOf(\"Pflicht\") !== -1 : false)) { return false; } }\n        if (activeFacets.ueberh === true) { if (d.ueberh !== true) { return false; } }\n        if (activeFacets.massen === true) { if (d.massen !== true) { return false; } }\n        return true;\n    }\n    function domCount(dom) { var n = 0; for (var i = 0; i < DATA.length; i++) { if (DATA[i].dom === dom) { n++; } } return n; }\n    function renderDomChips() {\n        var host = document.getElementById('qbfDoms'); if (!host) { return; }\n        var h = '';\n        for (var i = 0; i < DOM_ORDER.length; i++) {\n            var d = DOM_ORDER[i]; var on = activeDoms[d] === true;\n            h += '<button type=\"button\" class=\"qbf-dom' + (on ? ' is-on' : '') + '\" data-qbf=\"dom\" data-dom=\"' + esc(d) + '\" aria-pressed=\"' + (on ? 'true' : 'false') + '\">' + esc(DOM_LABEL[d]) + ' <span class=\"qbf-dom-n\">' + domCount(d) + '<\/span><\/button>';\n        }\n        host.innerHTML = h;\n    }\n\n    var FACS = [\n        [\"ziel\", \"braucht Ziel\"],\n        [\"ueberh\", \"\u00dcberh\u00f6hung\"],\n        [\"massen\", \"Massen (Profilarten)\"]\n    ];\n    function facCount(key) {\n        var n = 0;\n        for (var i = 0; i < DATA.length; i++) {\n            var d = DATA[i];\n            if (key === \"ziel\") { if (d.ziele ? d.ziele.indexOf(\"Pflicht\") !== -1 : false) { n += 1; } }\n            else if (key === \"ueberh\") { if (d.ueberh === true) { n += 1; } }\n            else { if (d.massen === true) { n += 1; } }\n        }\n        return n;\n    }\n    function renderFacChips() {\n        var host = document.getElementById('qbfFacs'); if (!host) { return; }\n        var h = '';\n        for (var i = 0; i < FACS.length; i++) {\n            var f = FACS[i]; var on = activeFacets[f[0]] === true;\n            h += '<button type=\"button\" class=\"qbf-fac' + (on ? ' is-on' : '') + '\" data-qbf=\"fac\" data-fac=\"' + f[0] + '\" aria-pressed=\"' + (on ? 'true' : 'false') + '\">' + esc(f[1]) + ' <span class=\"qbf-dom-n\">' + facCount(f[0]) + '<\/span><\/button>';\n        }\n        host.innerHTML = h;\n    }\n    function renderFamBar() {\n        var bar = document.getElementById('qbfFamBar'); if (!bar) { return; }\n        if (activeFam === null) { bar.style.display = 'none'; bar.innerHTML = ''; return; }\n        var n = 0;\n        for (var i = 0; i < DATA.length; i++) { if (DATA[i].kat === activeFam) { n += 1; } }\n        bar.style.display = 'flex';\n        bar.innerHTML = 'Familie: <strong>' + esc(activeFam) + '<\/strong> (' + n + ' Varianten, alle Bereiche) <button type=\"button\" class=\"qbf-act\" data-qbf=\"famclear\">Familie aufheben<\/button>';\n    }\n\n    \/\/ ---- Vergleich (der Kern des Werkzeugs) ----\n    var cmpSel = [];\n    function renderCmpBar() {\n        var bar = document.getElementById('qbfCmpBar');\n        var tEl = document.getElementById('qbfCmpBarText');\n        if (!bar) { return; }\n        if (tEl) {\n            if (cmpSel.length === 0) { tEl.textContent = 'Vergleich: pro Karte \u201eVergleichen\u201c klicken (2 bis 3 Bestandteile).'; }\n            else if (cmpSel.length === 1) { tEl.textContent = '1 gew\u00e4hlt \u2013 noch mindestens eines w\u00e4hlen.'; }\n            else { tEl.textContent = cmpSel.length + ' gew\u00e4hlt \u2013 bereit zum Vergleichen.'; }\n        }\n    }\n    function cmpToggle(name) {\n        var i = cmpSel.indexOf(name);\n        if (i !== -1) { cmpSel.splice(i, 1); }\n        else {\n            if (cmpSel.length >= 3) {\n                var t = document.getElementById('qbfCmpBarText');\n                if (t) { t.textContent = 'Maximal 3 zum Vergleichen. Erst eines abw\u00e4hlen.'; }\n                return;\n            }\n            cmpSel.push(name);\n        }\n        renderCmpBar(); reflectCardStates();\n        var panel = document.getElementById('qbfComparePanel');\n        if (panel ? panel.style.display === 'block' : false) { renderCompare(); }\n    }\n    function cmpClear() { cmpSel = []; renderCmpBar(); reflectCardStates(); hideCompare(); }\n    function hideCompare() { var p = document.getElementById('qbfComparePanel'); if (p) { p.style.display = 'none'; p.innerHTML = ''; } }\n    function renderCompare() {\n        var panel = document.getElementById('qbfComparePanel'); if (!panel) { return; }\n        if (cmpSel.length < 2) {\n            hideCompare();\n            var t = document.getElementById('qbfCmpBarText');\n            if (t) { t.textContent = 'Mindestens zwei Bestandteile w\u00e4hlen, dann vergleichen.'; }\n            return;\n        }\n        var items = [];\n        for (var i = 0; i < cmpSel.length; i++) { var it = byName(cmpSel[i]); if (it) { items.push(it); } }\n        var rows = [\n            ['Schema', null],\n            ['Name', function(x) { return esc(x.name); }],\n            ['Original (EN)', function(x) { return '<code>' + esc(x.en) + '<\/code>'; }],\n            ['Bereich', function(x) { return esc(x.dom); }],\n            ['Kategorie', function(x) { return esc(x.kat); }],\n            ['Zweck', function(x) { return esc(x.zweck); }],\n            ['Kernparameter', function(x) { return esc(x.param); }],\n            ['Ziele', function(x) { return x.ziele ? esc(x.ziele) : '&#8211;'; }],\n            ['\u00dcberh\u00f6hung', function(x) { return x.ueberh === true ? 'ja' : (x.ueberh === false ? 'nein' : '&#8211;'); }],\n            ['Massen (Profilarten)', function(x) { return x.massen === true ? 'ja' : (x.massen === false ? 'nein' : '&#8211;'); }],\n            ['Wann nehmen?', function(x) { return x.wann ? esc(x.wann) : '&#8211;'; }],\n            ['Typische Codes', function(x) { return esc(x.codes); }],\n            ['Fundort', function(x) { return esc(x.gruppe) + ' ' + ARROW + ' ' + esc(x.reiter); }]\n        ];\n        var h = '<div class=\"qbf-compare-head\"><strong>Vergleich (' + items.length + ')<\/strong><button type=\"button\" class=\"qbf-act\" data-qbf=\"cmpclose\">Schlie\u00dfen<\/button><\/div>';\n        h += '<div class=\"qbf-compare-scroll\"><div class=\"qbf-compare-grid\" style=\"grid-template-columns:126px repeat(' + items.length + ',minmax(180px,1fr));\">';\n        for (var r = 0; r < rows.length; r++) {\n            h += '<div class=\"qbf-cmp-rowlabel\">' + rows[r][0] + '<\/div>';\n            for (var c = 0; c < items.length; c++) {\n                if (rows[r][1] === null) { h += '<div class=\"qbf-cmp-cell\"><div class=\"qbf-cmp-svg\" data-cmpidx=\"' + c + '\"><\/div><\/div>'; }\n                else { h += '<div class=\"qbf-cmp-cell\">' + rows[r][1](items[c]) + '<\/div>'; }\n            }\n        }\n        h += '<\/div><\/div>';\n        panel.innerHTML = h; panel.style.display = 'block';\n        var svgHosts = panel.querySelectorAll('.qbf-cmp-svg');\n        for (var s2 = 0; s2 < svgHosts.length; s2++) {\n            var ci = parseInt(svgHosts[s2].getAttribute('data-cmpidx'), 10);\n            if (items[ci]) { drawMini(svgHosts[s2], items[ci]); }\n        }\n    }\n\n    function reflectCardStates() {\n        var rEl = document.getElementById('qbfResults'); if (!rEl) { return; }\n        var cmps = rEl.querySelectorAll('.qbf-cmp');\n        for (var j = 0; j < cmps.length; j++) {\n            var on = cmpSel.indexOf(cmps[j].getAttribute('data-name')) !== -1;\n            cmps[j].classList.toggle('is-on', on);\n            cmps[j].textContent = on ? '\u2713 im Vergleich' : 'Vergleichen';\n        }\n    }\n\n    window.qbfChip = function(v) {\n        var search = document.getElementById('qbfSearch');\n        if (search) { search.value = v; }\n        window.qbfFilter();\n    };\n    window.qbfResetAll = function() {\n        activeDoms = defaultDoms();\n        activeFacets = { ziel: false, ueberh: false, massen: false };\n        activeFam = null;\n        renderDomChips();\n        renderFacChips();\n        renderFamBar();\n        var search = document.getElementById('qbfSearch');\n        if (search) { search.value = ''; }\n        window.qbfFilter();\n    };\n\n    window.qbfFilter = function() {\n        var searchEl = document.getElementById('qbfSearch');\n        var raw = searchEl ? searchEl.value : '';\n        var words = norm(raw).trim().split(\" \").filter(function(w) { return w.length > 0; });\n        var wordsNoStop = words.filter(function(w) { return STOP[w] !== 1; });\n        if (wordsNoStop.length > 0) { words = wordsNoStop; }\n\n        var searching = words.length > 0;\n\n        \/\/ Beim St\u00f6bern (ohne Suchwort) gilt der Anwendungsbereich-Vorfilter. Sobald gesucht\n        \/\/ wird, durchsuchen wir den GESAMTEN Katalog, sonst versteckt der Vorfilter echte\n        \/\/ Treffer (z. B. Rohrgraben im ausgeblendeten Bereich Graben).\n        var base = [];\n        var famMode = activeFam !== null;\n        for (var i = 0; i < DATA.length; i++) {\n            if (famMode) { if (DATA[i].kat !== activeFam) { continue; } }\n            if (!facetOk(DATA[i])) { continue; }\n            if (famMode ? true : (searching ? true : (activeDoms[DATA[i].dom] === true))) { base.push(DATA[i]); }\n        }\n        var hiddenByDom = DATA.length - base.length;\n\n        \/\/ Tolerant: Teilstring ODER ein Haystack-Wort ist Pr\u00e4fix des Suchworts, damit\n        \/\/ Flexionen greifen (\"allgemeiner\" trifft \"allgemein\", \"borde\" trifft \"bord\").\n        var results = [];\n        var orMode = false;\n        var hiddenHits = 0;\n        if (!searching) {\n            results = base.slice();\n            \/\/ Beim Stoebern: Empfohlene innerhalb ihrer Kategorie nach vorn.\n            var rec = [], oth = [];\n            for (var s = 0; s < results.length; s++) {\n                if (results[s].empf === true) { rec.push(results[s]); } else { oth.push(results[s]); }\n            }\n            results = rec.concat(oth);\n        } else {\n            \/\/ Scoring: jedes Suchwort muss treffen (AND); der beste Treffer steht oben.\n            \/\/ Faellt AND leer aus, zeigt der OR-Rueckfall die aehnlichsten Eintraege.\n            var q = words.join(\" \");\n            var scored = [];\n            for (var a = 0; a < base.length; a++) {\n                var it = base[a];\n                var total = 0, hitAll = true, hitAny = false;\n                for (var wq = 0; wq < words.length; wq++) {\n                    var sc = scoreWordSyn(it, words[wq]);\n                    if (sc > 0) { total += sc; hitAny = true; } else { hitAll = false; }\n                }\n                if (words.length > 1) { if (norm(it.name).indexOf(q) !== -1) { total += 6; } }\n                scored.push({ it: it, total: total, all: hitAll, any: hitAny });\n            }\n            var pool = scored.filter(function(x) { return x.all; });\n            if (pool.length === 0) {\n                orMode = true;\n                pool = scored.filter(function(x) { return x.any; });\n            }\n            pool.sort(function(x, y) {\n                if (y.total !== x.total) { return y.total - x.total; }\n                var ex = x.it.empf === true ? 1 : 0, ey = y.it.empf === true ? 1 : 0;\n                return ey - ex;\n            });\n            for (var pi = 0; pi < pool.length; pi++) { results.push(pool[pi].it); }\n            for (var hc = 0; hc < results.length; hc++) { if (activeDoms[results[hc].dom] !== true) { hiddenHits += 1; } }\n        }\n\n        var countEl = document.getElementById('qbfCount');\n        if (countEl) {\n            if (searching) { countEl.textContent = results.length + ' Treffer (Suche \u00fcber alle Anwendungsbereiche)'; }\n            else if (famMode) { countEl.textContent = results.length + ' von ' + DATA.length + ' Bestandteilen (Familienfilter aktiv)'; }\n            else { countEl.textContent = results.length + ' von ' + DATA.length + ' Bestandteilen' + (hiddenByDom > 0 ? ' (' + hiddenByDom + ' per Anwendungsbereich ausgeblendet)' : ''); }\n        }\n\n        var hintEl = document.getElementById('qbfHint');\n        if (hintEl) {\n            var hint = '';\n            if (orMode ? results.length > 0 : false) { hint = 'Keine exakten Treffer, hier die \u00e4hnlichsten Bestandteile.'; }\n            if (hiddenHits > 0) { hint = (hint ? hint + ' ' : '') + hiddenHits + (hiddenHits === 1 ? ' Treffer liegt' : ' Treffer liegen') + ' in einem ausgeblendeten Anwendungsbereich (am Bereich-Badge erkennbar).'; }\n            if (hint !== '') { hintEl.style.display = 'block'; hintEl.textContent = hint; }\n            else { hintEl.style.display = 'none'; hintEl.textContent = ''; }\n        }\n\n        var stober = (words.length === 0);\n        var itemsInOrder = [];\n        function cardHtml(item) {\n            var idx = itemsInOrder.length;\n            itemsInOrder.push(item);\n            var kk = KAT_KEY[item.kat] || 'Allgemein';\n            var nEsc = esc(item.name);\n            var onCmp = cmpSel.indexOf(item.name) !== -1;\n            var h = '';\n            h += '<div class=\"qbf-card kat-' + kk + '\" data-name=\"' + nEsc + '\">';\n            h += '<div class=\"qbf-card-svg\" data-idx=\"' + idx + '\"><\/div>';\n            h += '<div class=\"qbf-card-main\">';\n            h += '<div class=\"qbf-card-header\">';\n            h += '<span class=\"qbf-card-name\">' + nEsc + '<\/span>';\n            if (item.empf === true) { h += '<span class=\"qbf-badge qbf-badge-empf\">Empfohlen<\/span>'; }\n            h += '<span class=\"qbf-badge qbf-badge-dom\">' + esc(item.dom) + '<\/span>';\n            h += '<button type=\"button\" class=\"qbf-badge qbf-badge-kat qbf-badge-' + kk + '\" data-qbf=\"fam\" data-kat=\"' + esc(item.kat) + '\" title=\"Alle Varianten dieser Familie zeigen\">' + esc(item.kat) + '<\/button>';\n            h += '<span class=\"qbf-badge qbf-badge-reiter\">Reiter: ' + esc(item.reiter) + '<\/span>';\n            if (item.cc === true) { h += '<span class=\"qbf-badge qbf-badge-cc\">Country Kit<\/span>'; }\n            h += '<span class=\"qbf-card-actions\">';\n            h += '<button type=\"button\" class=\"qbf-cmp' + (onCmp ? ' is-on' : '') + '\" data-qbf=\"cmp\" data-name=\"' + nEsc + '\">' + (onCmp ? '\u2713 im Vergleich' : 'Vergleichen') + '<\/button>';\n            h += '<\/span><\/div>';\n            h += '<div class=\"qbf-card-en\">Palette (DACH): <code>' + esc(item.palette || item.reiter) + '<\/code> \u00b7 Klasse: <code>' + esc(item.en) + '<\/code>';\n            if (item.cc !== true) { h += '<button type=\"button\" class=\"qbf-copy\" data-qbf=\"copy\" data-en=\"' + esc(item.en) + '\">EN kopieren<\/button>'; }\n            h += '<\/div>';\n            h += '<div class=\"qbf-card-desc\">' + esc(item.zweck) + '<\/div>';\n            h += '<details class=\"qbf-detail\">';\n            h += '<summary>Fundort, Palette, Parameter, Codes<\/summary>';\n            h += '<dl>';\n            h += '<dt>So findest du es<\/dt><dd class=\"' + (item.cc === true ? 'qbf-alt' : 'qbf-find') + '\">' + esc(findWeg(item)) + '<\/dd>';\n            h += '<dt>Fundort (Gruppe)<\/dt><dd>' + esc(item.gruppe) + '<\/dd>';\n            h += '<dt>Palette (dt.)<\/dt><dd>' + esc(item.palette || item.reiter) + ' <span style=\"color:#94a3b8;\">(Schreibweise ggf. versionsabh\u00e4ngig)<\/span><\/dd>';\n            h += '<dt>Kernparameter<\/dt><dd>' + esc(item.param) + '<\/dd>';\n            h += '<dt>Ziele<\/dt><dd class=\"qbf-find\">' + (item.ziele ? esc(item.ziele) : 'am Kit \/ an der Version pr\u00fcfen') + ' <span style=\"color:#94a3b8;\">(Ziele werden im Profilk\u00f6rper zugewiesen)<\/span><\/dd>';\n            h += '<dt>Typische Codes<\/dt><dd>' + esc(item.codes).split('; ').join('<br>') + '<\/dd>';\n            if (item.wann) { h += '<dt>Wann nehmen?<\/dt><dd>' + esc(item.wann) + '<\/dd>'; }\n            var props = [];\n            if (item.ueberh === true) { props.push('unterst\u00fctzt \u00dcberh\u00f6hung'); }\n            if (item.massen === true) { props.push('mit Profilarten (massenrelevant)'); }\n            if (props.length > 0) { h += '<dt>Eigenschaften<\/dt><dd>' + props.join(' \u00b7 ') + '<\/dd>'; }\n            h += '<\/dl><\/details>';\n            h += '<\/div><\/div>';\n            return h;\n        }\n\n        var html = '';\n        if (results.length === 0) {\n            html = '<div class=\"qbf-empty\">Kein Bestandteil in den aktiven Anwendungsbereichen gefunden. Schalte oben einen Bereich zu (z. B. Schiene, Br\u00fccke, Graben, St\u00fctzwand) oder probier ein anderes Suchwort.<\/div>';\n        } else if (stober) {\n            var katOrder = [\"Fahrbahn\", \"Bordstein und Rinne\", \"Gehweg und Seitenraum\", \"Bankett\", \"Mittelstreifen\", \"B\u00f6schung und Anbindung\", \"Graben\", \"St\u00fctzwand\", \"Oberbau und Schichten\", \"Allgemein und Bausteine\", \"Br\u00fccke\", \"Schiene\", \"Country Kit (RStO)\"];\n            for (var kq = 0; kq < katOrder.length; kq++) {\n                var grpName = katOrder[kq];\n                var grp = [];\n                for (var gi = 0; gi < results.length; gi++) { if (results[gi].kat === grpName) { grp.push(results[gi]); } }\n                if (grp.length === 0) { continue; }\n                html += '<div class=\"qbf-group-head\">' + esc(grpName) + ' (' + grp.length + ')<\/div>';\n                for (var gj = 0; gj < grp.length; gj++) { html += cardHtml(grp[gj]); }\n            }\n        } else {\n            for (var r = 0; r < results.length; r++) { html += cardHtml(results[r]); }\n        }\n\n        var resultsEl = document.getElementById('qbfResults');\n        if (!resultsEl) { return; }\n        resultsEl.innerHTML = html;\n        var hosts = resultsEl.querySelectorAll('.qbf-card-svg');\n        for (var hh = 0; hh < hosts.length; hh++) {\n            var idx2 = parseInt(hosts[hh].getAttribute('data-idx'), 10);\n            var it2 = itemsInOrder[idx2];\n            if (!it2) { continue; }\n            drawMini(hosts[hh], it2);\n        }\n        reflectCardStates();\n        renderCmpBar();\n    };\n\n    \/\/ ---- Delegation + Init ----\n    window.qbfDom = function(btn, dom) {\n        activeDoms[dom] = activeDoms[dom] !== true;\n        renderDomChips();\n        window.qbfFilter();\n    };\n\n    var qbfBox = document.querySelector('.qbf-box');\n    function boxClick(e) {\n        var t = e.target.closest ? e.target.closest('[data-qbf]') : null;\n        if (!t) { return; }\n        var act = t.getAttribute('data-qbf');\n        var name = t.getAttribute('data-name');\n        if (act === 'dom') { window.qbfDom(t, t.getAttribute('data-dom')); return; }\n        if (act === 'fac') {\n            var fk = t.getAttribute('data-fac');\n            activeFacets[fk] = activeFacets[fk] !== true;\n            renderFacChips(); window.qbfFilter(); return;\n        }\n        if (act === 'fam') {\n            var fkat = t.getAttribute('data-kat');\n            activeFam = activeFam === fkat ? null : fkat;\n            renderFamBar(); window.qbfFilter(); return;\n        }\n        if (act === 'famclear') { activeFam = null; renderFamBar(); window.qbfFilter(); return; }\n        if (act === 'copy') { copyText(t.getAttribute('data-en'), t, 'kopieren'); return; }\n        if (act === 'cmp') { cmpToggle(name); return; }\n        if (act === 'cmpopen') { renderCompare(); return; }\n        if (act === 'cmpclear') { cmpClear(); return; }\n        if (act === 'cmpclose') { hideCompare(); return; }\n    }\n\n    renderDomChips();\n    renderFacChips();\n    renderFamBar();\n    renderCmpBar();\n    if (qbfBox) { qbfBox.addEventListener('click', boxClick); }\n    window.qbfFilter();\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Querschnittsbestandteil-Finder Der komplette Katalog der Standard-Querschnittsbestandteile (Subassemblies) plus DACH Country Kit &ndash; mit Anwendungsbereich-Vorfilter, starker Suche und Vergleich von Parametern [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"disabled","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[43],"tags":[],"class_list":["post-2289","post","type-post","status-publish","format-standard","hentry","category-querschnittsaufbau"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":false,"author_link":"https:\/\/cad-kompass.de\/?author=1"},"uagb_comment_info":0,"uagb_excerpt":"Querschnittsbestandteil-Finder Der komplette Katalog der Standard-Querschnittsbestandteile (Subassemblies) plus DACH Country Kit &ndash; mit Anwendungsbereich-Vorfilter, starker Suche und Vergleich von Parametern [&hellip;]","_links":{"self":[{"href":"https:\/\/cad-kompass.de\/index.php?rest_route=\/wp\/v2\/posts\/2289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cad-kompass.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cad-kompass.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cad-kompass.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cad-kompass.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2289"}],"version-history":[{"count":2,"href":"https:\/\/cad-kompass.de\/index.php?rest_route=\/wp\/v2\/posts\/2289\/revisions"}],"predecessor-version":[{"id":2314,"href":"https:\/\/cad-kompass.de\/index.php?rest_route=\/wp\/v2\/posts\/2289\/revisions\/2314"}],"wp:attachment":[{"href":"https:\/\/cad-kompass.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cad-kompass.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cad-kompass.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}