:root{color-scheme:dark;--bg:#101418;--panel:#192027;--panel2:#202a33;--line:#34424e;--text:#e8edf1;--muted:#9bacb8;--accent:#f0b429;--feed:#55c2ff;--rapid:#ff6577;--ok:#53d18b;--warn:#ffbf69;--error:#ff6577}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.4 system-ui,sans-serif;height:100vh;overflow:hidden}.topbar{height:78px;padding:12px 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#141a20}.topbar h1{font-size:21px;margin:0}.topbar p{margin:2px 0;color:var(--muted)}button{min-height:44px;touch-action:manipulation;border:1px solid #d89e17;background:var(--accent);color:#18130a;border-radius:6px;padding:8px 12px;font-weight:650;cursor:pointer}button.secondary,.tabs button,nav button{background:var(--panel2);border-color:var(--line);color:var(--text)}button:hover{filter:brightness(1.12)}.actions{display:flex;gap:8px}main{height:calc(100vh - 78px);display:grid;grid-template-columns:235px 1fr;gap:12px;padding:12px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:14px;min-height:0}.sidebar{overflow:hidden;position:relative}.sidebar h2,.panel h2{font-size:16px;margin:0 0 12px}nav{display:grid;gap:7px;margin-bottom:18px}nav button{text-align:left}.active{outline:2px solid var(--accent);outline-offset:-2px}details{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}summary{cursor:pointer;font-weight:650;margin-bottom:10px}.workspace{display:grid;grid-template-columns:minmax(290px,360px) 1fr;grid-template-rows:minmax(280px,1fr) 210px;gap:12px;min-height:0}.parameters{grid-row:1/3;overflow:hidden}.preview{display:flex;flex-direction:column}.report{overflow:hidden}.section-title{display:flex;justify-content:space-between;align-items:center;gap:8px}.tabs{display:flex;gap:5px}.tabs button{padding:5px 10px}.form-grid{display:grid;grid-template-columns:1fr minmax(105px,125px);gap:9px 10px;align-items:center}.form-grid label{color:#cbd5dc}.form-grid input,.form-grid select,.form-grid textarea{width:100%;background:#0e1317;color:var(--text);border:1px solid var(--line);border-radius:5px;padding:7px}.form-grid textarea{grid-column:1/3;min-height:140px;font:13px/1.4 monospace;resize:vertical}.field-note{grid-column:1/3;color:var(--muted);font-size:12px;margin-top:-5px}canvas{width:100%;height:100%;min-height:0;background:#0c1115;border-radius:5px;touch-action:none;cursor:grab}
canvas.dragging{cursor:grabbing}
.icon-button{min-width:44px;padding:5px 10px;font-size:20px;line-height:1}
#viewHint{margin-left:auto}#codeView{width:100%;height:100%;resize:none;background:#0c1115;color:#dce8ef;border:0;border-radius:5px;padding:12px;font:13px/1.45 monospace}.legend{display:flex;gap:16px;color:var(--muted);font-size:12px;margin-top:7px}.legend i{display:inline-block;width:18px;height:3px;margin-right:5px;vertical-align:middle}.legend .rapid{background:var(--rapid)}.legend .feed{background:var(--feed)}.legend .warning{background:var(--warn)}.legend .entry{background:#bd7cff}.stats{display:grid;grid-template-columns:repeat(5,minmax(100px,1fr));gap:8px;margin-bottom:12px}.stat{background:var(--panel2);padding:8px;border-radius:6px}.stat b{display:block;font-size:17px}.stat span{color:var(--muted);font-size:11px}.message{padding:7px 9px;margin:5px 0;border-left:4px solid;border-radius:3px;background:#11181d}.message.error{border-color:var(--error)}.message.warning{border-color:var(--warn)}.message.info{border-color:var(--feed)}@media(max-width:900px){body{height:auto;overflow:auto}.topbar{height:auto;align-items:flex-start}.actions{flex-wrap:wrap;justify-content:flex-end}main{height:auto;grid-template-columns:1fr}.workspace{grid-template-columns:1fr;grid-template-rows:auto 520px auto}.parameters{grid-row:auto}.stats{grid-template-columns:repeat(2,1fr)}}

/* Touchscreen-Modus: Alle Hauptfunktionen bleiben ohne Scrollen erreichbar. */
input,select,textarea{min-height:42px;font-size:16px;touch-action:manipulation}
.parameters .form-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 10px}
.parameters .form-grid textarea{grid-column:1/-1;min-height:118px;max-height:150px}
.parameters .form-grid label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar details[open]{position:fixed;z-index:20;left:5vw;right:5vw;top:8vh;bottom:8vh;background:var(--panel);border:2px solid var(--accent);border-radius:12px;padding:18px 22px;margin:0;box-shadow:0 12px 60px #000c;overflow:hidden}
.sidebar details[open] summary{min-height:44px;display:flex;align-items:center;font-size:18px;color:var(--accent)}
.sidebar details[open] .form-grid{grid-template-columns:repeat(4,minmax(120px,1fr));gap:12px 16px}
.sidebar details[open] input,.sidebar details[open] select{min-width:0}
@media(max-height:800px){.topbar{height:68px;padding:7px 16px}.topbar p{display:none}main{height:calc(100vh - 68px);padding:8px;gap:8px}.workspace{grid-template-rows:minmax(280px,1fr) 190px;gap:8px}.panel{padding:10px}.form-grid{gap:6px 8px}.parameters .form-grid{gap:6px 8px}.parameters .form-grid input,.parameters .form-grid select{min-height:38px}.parameters .form-grid textarea{min-height:95px;max-height:120px}.report h2{margin-bottom:6px}.stats{margin-bottom:6px}.message{padding:4px 7px;margin:3px 0}.sidebar details[open]{top:3vh;bottom:3vh}.sidebar details[open] .form-grid{gap:7px 12px}}
@media(max-width:1100px){main{grid-template-columns:170px 1fr}.workspace{grid-template-columns:minmax(330px,42%) 1fr}.topbar .actions button{padding:7px 9px}.sidebar details[open] .form-grid{grid-template-columns:repeat(4,minmax(90px,1fr))}.stats{grid-template-columns:repeat(5,minmax(70px,1fr));gap:5px}.stat{padding:6px}.stat b{font-size:15px}}
@media(max-width:1100px){#viewHint{display:none}}

/* Feldblöcke: vollständige Beschriftungen ohne abgeschnittene Parameternamen. */
.form-grid{grid-template-columns:1fr;gap:10px}
.field{min-width:0;display:flex;flex-direction:column;gap:4px}
.field label,.parameters .form-grid label{display:block;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.15;color:#dce6ec}
.field input,.field select,.field textarea{width:100%;min-width:0}
.field.wide{grid-column:1/-1}
.field.checkbox-field{display:grid;grid-template-columns:1fr 44px;align-items:center}
.field.checkbox-field input{width:32px;height:32px;justify-self:end}
.parameters .form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px}
.parameters .form-grid textarea{grid-column:auto;min-height:104px;max-height:132px}
.sidebar details[open] .form-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 14px}
@media(max-height:800px){.field{gap:2px}.field label{font-size:13px}.parameters .form-grid{gap:6px 10px}.parameters .form-grid textarea{min-height:82px;max-height:96px}.sidebar details[open] .form-grid{gap:6px 12px}}
@media(max-width:1100px){.parameters .form-grid{gap:6px 8px}.field label{font-size:13px}.sidebar details[open] .form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.simulation-controls{display:grid;grid-template-columns:44px 44px auto minmax(90px,180px) 42px 1fr;align-items:center;gap:7px;margin-top:7px;min-height:44px}
.simulation-controls button{padding:4px}
.simulation-controls label,.simulation-controls output{color:var(--muted);font-size:12px}
.simulation-controls input[type="range"]{min-height:32px;accent-color:var(--accent)}
#simStatus{text-align:right;color:#dce6ec;font:12px/1.2 monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:1100px){.simulation-controls{grid-template-columns:44px 44px minmax(80px,1fr) 34px}.simulation-controls label{display:none}#simStatus{grid-column:1/-1;text-align:left}.preview .legend{display:none}}
/* Das Hauptmenü ist ein Touch-Overlay und verbraucht keine Arbeitsbreite. */
.brand{display:flex;align-items:center;gap:14px}.brand-copy{min-width:0}.brand-heading{display:flex;align-items:center;gap:12px}.brand-logo{display:block;width:104px;height:auto;opacity:.78}
.menu-button{min-width:132px}
main{grid-template-columns:1fr}
.sidebar{position:fixed;z-index:30;left:10px;top:88px;bottom:10px;width:min(320px,calc(100vw - 20px));transform:translateX(calc(-100% - 20px));transition:transform .2s ease;box-shadow:0 16px 60px #000d;overflow:hidden}
.sidebar.open{transform:translateX(0)}
.sidebar-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.sidebar-title h2{margin:0}
.menu-backdrop{position:fixed;z-index:25;inset:0;background:#0008;touch-action:manipulation}
.sidebar details[open]{z-index:40}
@media(max-height:800px){.sidebar{top:76px;bottom:8px}}
@media(max-width:1100px){main{grid-template-columns:1fr}.menu-button{min-width:118px}}
/* Kein transform am Hauptmenü: fixed Untermenüs beziehen sich dadurch auf den Viewport. */
.sidebar{left:-340px;transform:none;transition:left .2s ease}
.sidebar.open{left:10px;transform:none}
.profile-close{display:none;position:absolute;z-index:42;right:16px;top:14px;min-width:44px;width:44px;height:44px;padding:0;font-size:24px;line-height:1}
.sidebar details[open]>.profile-close{display:block}
.sidebar details[open]>summary{padding-right:58px}
@media(max-height:800px){.profile-close{top:10px;right:12px}}.report-title{margin-bottom:6px}.report-title h2{margin:0}.report-title #messagesBtn{min-height:36px;padding:5px 10px}.messages-preview .message{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.message-more{color:var(--muted);font-size:12px;text-align:right;margin-top:3px}.message-summary.error{border-color:var(--error);color:#ffd7dc}.message-summary.warning{border-color:var(--warn);color:#ffe1b8}dialog{width:min(720px,92vw);max-width:92vw;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--text);padding:18px;box-shadow:0 20px 60px #000b}dialog::backdrop{background:#05080bcc}.dialog-title{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding-bottom:10px}.dialog-title h2{margin:0;font-size:20px}.message-detail{min-height:150px;display:flex;align-items:center;padding:14px 0}.message-detail .message{width:100%;font-size:18px;padding:18px;white-space:normal;overflow-wrap:anywhere}.message-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;border-top:1px solid var(--line);padding-top:12px}.message-nav button:last-child{justify-self:end}.message-nav output{font-weight:650;color:var(--muted);min-width:70px;text-align:center}@media(max-height:800px){dialog{padding:12px}.message-detail{min-height:110px}.message-detail .message{font-size:16px;padding:14px}}@media(max-height:800px){.messages-preview .message:nth-child(n+2){display:none}}
.tool-selector{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;margin:2px 0 12px;padding:8px;background:var(--panel2);border-radius:6px}.tool-selector label{font-weight:650}.tool-selector select,.tool-editor input{width:100%;min-height:40px;background:#0e1317;color:var(--text);border:1px solid var(--line);border-radius:5px;padding:7px}.tool-dialog{width:min(940px,94vw)}.tool-manager{display:grid;grid-template-columns:minmax(360px,1fr) minmax(390px,1.1fr);gap:18px;padding:14px 0}.tool-list table{width:100%;border-collapse:collapse;table-layout:fixed}.tool-list th,.tool-list td{padding:8px;border-bottom:1px solid var(--line);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-list th:first-child,.tool-list td:first-child{width:56px}.tool-list th:nth-child(3),.tool-list td:nth-child(3){width:64px}.tool-list th:last-child,.tool-list td:last-child{width:78px}.tool-list tbody tr{height:48px;cursor:pointer}.tool-list tbody tr.selected{background:#3a3320;outline:2px solid var(--accent);outline-offset:-2px}.tool-pages{display:grid;grid-template-columns:52px 1fr 52px;align-items:center;gap:8px;margin-top:8px}.tool-pages output{text-align:center;color:var(--muted);font-weight:650}.tool-editor{display:grid;grid-template-columns:170px 1fr;gap:7px 10px;align-items:center}.tool-editor input[type=checkbox]{width:38px;height:38px;justify-self:start}.tool-actions{display:grid;grid-template-columns:auto auto auto auto 1fr auto auto;gap:8px;padding-top:12px;border-top:1px solid var(--line)}@media(max-height:800px){.tool-selector{margin-bottom:8px;padding:5px}.tool-dialog{padding:12px}.tool-manager{padding:8px 0;gap:12px}.tool-list tbody tr{height:43px}.tool-list th,.tool-list td{padding:6px}.tool-editor{gap:5px 8px}.tool-editor input{min-height:36px}.tool-actions{padding-top:8px}}@media(max-width:850px){.tool-manager{grid-template-columns:1fr}.tool-list tbody tr:nth-child(n+4){display:none}}
/* Bild-Schaltflächen für kurze Auswahllisten. */
.choice-group{display:grid;gap:4px;min-width:0}.choice-group[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}.choice-group[data-count="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.choice-group[data-count="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}.choice-button{min-width:0;min-height:42px;padding:4px 5px;display:flex;align-items:center;justify-content:center;gap:4px;background:#0e1317!important;border-color:var(--line)!important;color:#cbd5dc!important;font-size:12px;line-height:1.05;overflow:hidden}.choice-button svg{width:20px;height:20px;flex:0 0 20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.choice-button span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.choice-button.active{background:#3a3320!important;border-color:var(--accent)!important;color:#fff5cf!important;outline:2px solid var(--accent);outline-offset:-2px}.choice-group[data-count="3"] .choice-button,.choice-group[data-count="4"] .choice-button{min-height:50px;flex-direction:column;gap:1px;padding:3px 2px}.choice-group[data-count="3"] .choice-button span,.choice-group[data-count="4"] .choice-button span{max-width:100%;font-size:10.5px}.choice-group[data-count="4"] .choice-button svg{width:18px;height:18px;flex-basis:18px}@media(max-height:800px){.choice-button{min-height:38px}.choice-group[data-count="3"] .choice-button,.choice-group[data-count="4"] .choice-button{min-height:40px}.choice-button svg{width:18px;height:18px;flex-basis:18px}}
@media(max-height:800px) and (max-width:1100px){.parameters .form-grid{row-gap:4px}.tool-selector{margin-bottom:5px}}

.field-hint{color:var(--muted);font-size:11px;line-height:1.15;margin-top:1px}
@media(max-height:800px){.field-hint{font-size:10px}}

/* Touchgerechter Konturimport für SVG, DXF und NC. */
.geometry-import-dialog{width:min(1180px,96vw);height:min(720px,94vh);max-width:96vw;max-height:94vh;overflow:hidden}
.geometry-import-dialog[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:10px}
.import-file-meta{color:var(--muted);font-size:12px;margin-top:2px;max-width:70vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.geometry-import-layout{display:grid;grid-template-columns:minmax(350px,410px) minmax(0,1fr);gap:12px;min-height:0}
.import-controls{display:flex;flex-direction:column;gap:8px;min-height:0;padding-right:10px;border-right:1px solid var(--line)}
.import-transform-grid{display:grid;grid-template-columns:105px minmax(0,1fr);gap:5px 8px;align-items:center}
.import-transform-grid label{color:#dce6ec;font-size:13px}
.import-transform-grid input,.import-transform-grid select{width:100%;min-width:0;min-height:36px;background:#0e1317;color:var(--text);border:1px solid var(--line);border-radius:5px;padding:5px 7px}
.import-mirror-buttons{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.import-mirror-buttons button{min-height:38px;padding:5px 7px}
.import-list-title{display:flex;justify-content:space-between;align-items:center;color:#dce6ec}.import-list-title span{color:var(--muted);font-size:12px}
.import-contour-list{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,minmax(48px,1fr));gap:6px;min-height:156px}
.import-contour-choice{min-width:0;min-height:48px;padding:5px 7px;text-align:left;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;overflow:hidden}
.import-contour-choice strong,.import-contour-choice span{display:block;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.import-contour-choice strong{font-size:12px}.import-contour-choice span{font-size:10.5px;color:var(--muted);font-weight:500}
.import-contour-choice.active span{color:#fff0bd}
.import-pages{display:grid;grid-template-columns:52px 1fr 52px;gap:6px;align-items:center}.import-pages button{min-height:38px;padding:4px}.import-pages output{text-align:center;color:var(--muted);font-weight:650}
.import-warnings{min-height:36px}.import-warning-button,.import-ok{width:100%;min-height:36px;padding:5px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;font-size:12px}.import-warning-button{border-color:var(--warn)!important;color:#ffe1b8!important}.import-ok{display:flex;align-items:center;color:var(--ok);background:#11181d;border-left:4px solid var(--ok);border-radius:4px}
.import-preview{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:5px;min-width:0;min-height:0}.import-preview canvas{width:100%;height:100%;min-height:260px;background:#0c1115;border-radius:6px;touch-action:manipulation}.import-preview-hint{color:var(--muted);font-size:11px;text-align:center}
.import-actions{display:grid;grid-template-columns:auto 1fr auto auto;gap:8px;padding-top:10px;border-top:1px solid var(--line)}
@media(max-height:800px){.geometry-import-dialog{height:94vh;padding:10px}.geometry-import-dialog[open]{gap:7px}.geometry-import-layout{gap:8px}.import-controls{gap:5px}.import-transform-grid{gap:3px 7px}.import-transform-grid input,.import-transform-grid select{min-height:32px;padding:3px 6px}.import-mirror-buttons button,.import-pages button{min-height:34px}.import-contour-list{min-height:138px;grid-template-rows:repeat(3,minmax(42px,1fr));gap:4px}.import-contour-choice{min-height:42px;padding:3px 6px}.import-warnings{min-height:32px}.import-warning-button,.import-ok{min-height:32px;padding:3px 7px}.import-actions{padding-top:7px}.import-actions button{min-height:40px}}
@media(max-width:800px){.geometry-import-layout{grid-template-columns:1fr}.import-preview{display:none}.import-controls{padding-right:0;border-right:0}}
/* Kompakte Zahlenfelder und feste Formularplätze verhindern Layoutsprünge. */
input[type="number"]{text-align:right;font-variant-numeric:tabular-nums}
.parameters .form-grid{align-items:start}
.parameters .field:not(.wide){height:72px;min-height:72px}
.parameters .field input[type="number"]{width:min(100%,100px)}
.parameters .field.point-field textarea{width:min(190px,100%)}
.parameters .field-placeholder{visibility:hidden;pointer-events:none}
.parameters .field-placeholder.textarea-placeholder{min-height:104px}
.tool-editor input[type="number"]{max-width:150px;justify-self:end}
.import-transform-grid input[type="number"]{max-width:130px;justify-self:end}
@media(max-height:800px){.parameters .form-grid{row-gap:2px}.parameters .field:not(.wide){height:55px;min-height:55px}.parameters .choice-group[data-count="3"] .choice-button,.parameters .choice-group[data-count="4"] .choice-button{min-height:38px}.parameters .field.point-field textarea{width:min(180px,100%);min-height:76px;max-height:76px}.parameters .field-placeholder.textarea-placeholder{min-height:76px}}
/* Lokale Projektverwaltung und druckbare A4-Programmdokumentation. */
.dialog-subtitle{color:var(--muted);font-size:12px;margin-top:2px}
.project-dialog{width:min(960px,96vw);height:min(720px,94vh);max-width:96vw;max-height:94vh;overflow:hidden}
.project-dialog[open]{display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto auto auto;gap:8px}
.project-editor{display:grid;grid-template-columns:125px minmax(150px,.65fr) 110px minmax(220px,1fr);align-items:center;gap:8px 10px;padding:9px;background:var(--panel2);border-radius:7px}
.project-editor label,.program-meta-fields label{font-weight:650;color:#dce6ec}
.project-editor input,.program-meta-fields input{width:100%;min-width:0;min-height:42px;background:#0e1317;color:var(--text);border:1px solid var(--line);border-radius:5px;padding:7px 9px;font-size:16px}
.project-list-title{display:flex;align-items:center;justify-content:space-between}.project-list-title span{color:var(--muted)}
.project-list{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,minmax(70px,1fr));gap:7px;min-height:0}
.project-card{min-width:0;min-height:70px;display:grid;grid-template-columns:92px minmax(0,1fr);gap:9px;text-align:left;padding:6px 8px;background:#11181d!important;border-color:var(--line)!important;color:var(--text)!important;overflow:hidden}
.project-card.active{background:#3a3320!important;border-color:var(--accent)!important;outline:2px solid var(--accent);outline-offset:-2px}
.project-card img{width:92px;height:52px;object-fit:cover;background:#f4f6f7;border-radius:4px}
.project-card .project-card-text{min-width:0;display:flex;flex-direction:column;justify-content:center}
.project-card strong,.project-card span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-card strong{font-size:14px}.project-card span{font-size:11px;color:var(--muted);font-weight:500}.project-card.active span{color:#fff0bd}
.project-empty{grid-column:1/-1;display:grid;place-items:center;color:var(--muted);border:1px dashed var(--line);border-radius:7px}
.project-pages{display:grid;grid-template-columns:52px 1fr 52px;align-items:center;gap:8px}.project-pages button{min-height:38px;padding:4px}.project-pages output{text-align:center;color:var(--muted);font-weight:650}
.project-message{min-height:20px;color:var(--muted);font-size:12px}.project-message.error{color:#ffd7dc}.project-message.success{color:#a9f0c9}
.project-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.project-actions button{min-height:42px;padding:6px 8px}.danger-button{border-color:var(--error)!important;color:#ffd7dc!important}
.program-meta-dialog{width:min(620px,92vw)}.program-meta-dialog p{color:var(--muted)}
.program-meta-fields{display:grid;grid-template-columns:140px minmax(0,1fr);align-items:center;gap:9px 12px;margin:14px 0}
.meta-error{min-height:22px;color:#ffd7dc}.meta-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:10px;border-top:1px solid var(--line)}
.documentation-dialog{width:min(1000px,96vw);height:min(740px,96vh);max-width:96vw;max-height:96vh;overflow:hidden;padding:12px}
.documentation-dialog[open]{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:8px}
.documentation-toolbar{display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:8px;color:var(--muted)}
.doc-view-buttons{display:grid;grid-template-columns:64px 64px;gap:5px}.doc-view-buttons button{min-height:40px;padding:5px}
.program-sheet-wrap{min-height:0;position:relative;overflow:hidden;background:#0c1115;border-radius:7px;padding:6px}
.program-sheet{position:absolute;left:50%;top:50%;width:794px;height:1123px;min-width:794px;min-height:1123px;transform-origin:center;background:white;color:#17212a;padding:24px 29px;font:12px/1.25 system-ui,sans-serif;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto auto auto auto;gap:10px;box-shadow:0 4px 18px #0008;overflow:hidden}
.sheet-header{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #273a48;padding-bottom:1.2%}.sheet-header h1{font-size:1.7em;margin:.1em 0}.sheet-kicker{font-weight:700;color:#697984}.sheet-program{text-align:right;max-width:50%}.sheet-program strong,.sheet-program span{display:block;overflow-wrap:anywhere}.sheet-program strong{font-size:1.55em}.sheet-program span{font-size:1.05em}
.sheet-meta{display:grid;grid-template-columns:1fr 1fr;gap:.45em 1.5em;padding:.6% 0}.sheet-meta span{display:grid;grid-template-columns:30% 1fr;gap:.5em}.sheet-meta b{color:#5d6b75}.sheet-meta i{font-style:normal;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#documentationCanvas{width:100%;height:100%;min-height:0;border:1px solid #b7c1c8;border-radius:3px;background:#fff}
.sheet-legend{display:flex;gap:1.4em;align-items:center;color:#596873}.sheet-legend i{display:inline-block;width:1.4em;height:3px;margin-right:.35em;vertical-align:middle}.doc-feed{background:#168ec4}.doc-rapid{background:#df4e62}.doc-entry{background:#8c4fc7}.sheet-legend #docViewName{margin-left:auto;font-weight:700;color:#273a48}
.sheet-columns{display:grid;grid-template-columns:1.2fr 1fr;gap:3%;min-height:0}.sheet-columns section,.sheet-warnings{border:1px solid #cbd2d7;border-radius:3px;padding:1.5% 2%}.program-sheet h2{font-size:1.05em;margin:0 0 .45em;color:#273a48}.sheet-data{display:grid;grid-template-columns:1fr 1fr;gap:.2em 1em}.sheet-data span{display:flex;justify-content:space-between;gap:.6em;border-bottom:1px dotted #cbd2d7}.sheet-data b{font-weight:600;color:#56656f}.sheet-data i{font-style:normal;font-weight:700;text-align:right}.sheet-warnings{min-height:0}.sheet-warning-list{margin:0;padding-left:1.25em;display:grid;gap:.15em}.sheet-warning-ok{color:#2d7050}.sheet-warning-error{color:#a3273a}.sheet-warning-warning{color:#8a5a10}.program-sheet footer{display:flex;justify-content:space-between;border-top:1px solid #8d9aa3;padding-top:.6%;color:#697984}
@media(max-height:800px){.project-dialog{height:94vh;padding:10px}.project-dialog[open]{gap:5px}.project-editor{padding:6px}.project-editor input{min-height:38px}.project-list{grid-template-rows:repeat(3,minmax(60px,1fr));gap:5px}.project-card{min-height:60px}.project-actions{gap:5px}.project-actions button{min-height:38px}.documentation-dialog{height:96vh}.documentation-toolbar button{min-height:38px}}
@media(max-width:760px){.project-editor{grid-template-columns:110px 1fr}.project-list{grid-template-columns:1fr}.project-card:nth-child(n+4){display:none}.project-actions{grid-template-columns:repeat(2,1fr)}}
@page{size:A4 portrait;margin:0}
@media print{body.printing-documentation{background:#fff;height:auto;overflow:visible}body.printing-documentation>*:not(#documentationDialog){display:none!important}body.printing-documentation #documentationDialog{display:block!important;position:static!important;width:210mm!important;height:297mm!important;max-width:none!important;max-height:none!important;margin:0!important;padding:0!important;border:0!important;box-shadow:none!important;background:#fff!important;color:#17212a!important}body.printing-documentation #documentationDialog>.dialog-title,body.printing-documentation .documentation-toolbar{display:none!important}body.printing-documentation .program-sheet-wrap{display:block!important;width:210mm!important;height:297mm!important;padding:0!important;background:#fff!important;overflow:visible!important}body.printing-documentation .program-sheet{position:static!important;left:auto!important;top:auto!important;transform:none!important;width:210mm!important;height:297mm!important;min-width:210mm!important;min-height:297mm!important;max-width:none!important;box-shadow:none!important;padding:12mm 14mm!important;font-size:9.5pt!important}}
/* Gemeinsamer, touchfreundlicher Dialog für Maschinenprofil und Zustellung. */
.settings-dialog{width:min(980px,96vw);height:min(690px,94vh);max-width:96vw;max-height:94vh;overflow:hidden}
.settings-dialog[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:10px}
.settings-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-height:0}
.settings-section{min-width:0;min-height:0;padding:12px;background:#11181d;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.settings-section-title{margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.settings-section-title h3{margin:0;font-size:17px;color:#fff2c7}
.settings-section-title span{display:block;margin-top:2px;color:var(--muted);font-size:12px}
.settings-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px;align-content:start}
.settings-field-grid .field{min-height:57px}
.settings-field-grid .field label{font-size:12px;line-height:1.15;color:#cbd6dd}
.settings-field-grid input,.settings-field-grid select{width:100%;min-width:0;min-height:38px;background:#0e1317;color:var(--text);border:1px solid var(--line);border-radius:5px;padding:5px 8px}
.settings-field-grid input[type="number"]{max-width:none}
.settings-field-grid .choice-button{min-height:38px}
#machineFields .field[data-slot="name"],#entryFields .field[data-slot="method"],#entryFields .field[data-slot="allowOutsideAuto"]{grid-column:1/-1}
.settings-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:9px;border-top:1px solid var(--line)}
.settings-actions span{color:var(--muted);font-size:12px}
.settings-actions button{min-width:120px}
@media(max-height:800px){.settings-dialog{height:94vh;padding:10px}.settings-dialog[open]{gap:7px}.settings-section{padding:9px}.settings-section-title{margin-bottom:7px;padding-bottom:5px}.settings-field-grid{gap:5px 9px}.settings-field-grid .field{min-height:50px}.settings-field-grid input,.settings-field-grid select{min-height:34px}.settings-actions{padding-top:6px}.settings-actions button{min-height:38px}}

/* Maximierbare Vorschau und unabhängiger Positionsregler der Simulation. */
.preview-backdrop{position:fixed;z-index:64;inset:0;background:#05080bd9;touch-action:manipulation}
.preview.maximized{position:fixed;z-index:65;inset:10px;width:auto;height:auto;margin:0;padding:14px;box-shadow:0 18px 70px #000;grid-column:auto;grid-row:auto}
.preview.maximized .section-title h2{font-size:20px}
.preview.maximized #previewMaxBtn{border-color:var(--accent);color:#fff5cf}
#previewMaxBtn{font-size:21px}
.simulation-controls{grid-template-columns:44px 44px minmax(185px,250px) minmax(0,1fr);grid-template-rows:minmax(44px,auto) 38px;align-items:center;gap:5px 8px}
.sim-control-row{display:grid;grid-template-columns:auto minmax(80px,1fr) 38px;align-items:center;gap:7px;min-width:0}
.sim-control-row input[type="range"]{width:100%;min-width:0;margin:0}
.sim-speed-control{grid-column:3;grid-row:1}
.sim-position-control{grid-column:1/-1;grid-row:2;grid-template-columns:62px minmax(120px,1fr) 72px}
#simStatus{grid-column:4;grid-row:1}
#simPositionOut{text-align:right;font-variant-numeric:tabular-nums}
@media(max-width:1100px){.simulation-controls{grid-template-columns:44px 44px minmax(150px,220px) minmax(0,1fr);grid-template-rows:42px 36px}.simulation-controls label{display:block}.sim-speed-control{grid-column:3}.sim-position-control{grid-column:1/-1}#simStatus{grid-column:4;grid-row:1;text-align:right}.preview .legend{display:none}}
@media(max-height:800px){.preview.maximized{inset:6px;padding:10px}.simulation-controls{margin-top:4px;gap:3px 7px}.sim-position-control{grid-template-rows:32px}.simulation-controls input[type="range"]{min-height:28px}}

/* Punktwahl für die Zustellmethode vorhandenes Loch/Punkt. */
.entry-point-picker{display:grid;grid-template-columns:minmax(170px,1fr);gap:6px;margin-top:12px;padding:10px;border:1px solid #536574;border-radius:7px;background:#18232b}
.entry-point-picker[hidden],.entry-point-pick-notice[hidden]{display:none!important}
.entry-point-picker button{width:100%}
.entry-point-picker span{color:var(--muted);font-size:12px;line-height:1.25}
.preview{position:relative}
.entry-point-pick-notice{position:absolute;z-index:4;left:50%;top:58px;transform:translateX(-50%);width:min(640px,calc(100% - 24px));display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;border:2px solid var(--accent);border-radius:8px;background:#2d2818f2;box-shadow:0 8px 28px #000b;color:#fff6d8}
.entry-point-pick-notice span{font-size:13px}
.entry-point-pick-notice button{min-height:38px;padding:5px 10px}
#previewCanvas.picking-entry-point{cursor:crosshair;outline:2px solid var(--accent);outline-offset:-2px}
@media(max-height:800px){.entry-point-picker{margin-top:8px;padding:7px}.entry-point-pick-notice{top:50px;padding:5px 8px}.entry-point-pick-notice button{min-height:34px}}

/* Kompaktes, scrollfreies Touch-Layout für die Gravurschrift. */
#toolFields[data-scope="engraving"]{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 7px}
#toolFields[data-scope="engraving"] .field[data-slot="text"]{grid-column:1/-1}
#toolFields[data-scope="engraving"] .field[data-slot="text"] textarea{min-height:68px;max-height:68px}
#toolFields[data-scope="engraving"] .field[data-slot="align"]{grid-column:span 2}
#toolFields[data-scope="engraving"] .field:not(.wide){height:76px;min-height:76px;gap:2px}
#toolFields[data-scope="engraving"] .field:not(.wide)>label{display:flex;align-items:flex-end;height:30px;min-height:30px;line-height:1.15;white-space:normal;overflow:hidden;overflow-wrap:anywhere;hyphens:auto}
#toolFields[data-scope="engraving"] .choice-button{height:42px;min-height:42px}
@media(max-height:800px){#toolFields[data-scope="engraving"] .field:not(.wide){height:72px;min-height:72px}#toolFields[data-scope="engraving"] .choice-button{height:38px;min-height:38px}}

@media(max-height:650px){#toolFields[data-scope="engraving"]{row-gap:2px}#toolFields[data-scope="engraving"] .field[data-slot="text"] textarea{min-height:42px;max-height:42px}#toolFields[data-scope="engraving"] .field[data-slot="text"] .field-hint{display:none}}

/* Touchgerechte, scrollfreie TrueType-Konturschrift. */
#toolFields[data-scope="outlineText"]{grid-template-columns:repeat(3,minmax(0,1fr));gap:3px 7px}
#toolFields[data-scope="outlineText"] .field[data-slot="text"],#toolFields[data-scope="outlineText"] .font-field{grid-column:1/-1}
#toolFields[data-scope="outlineText"] .field[data-slot="text"] textarea{min-height:50px;max-height:50px}
#toolFields[data-scope="outlineText"] .field[data-slot="operation"],#toolFields[data-scope="outlineText"] .field[data-slot="millingMode"]{grid-column:span 2}
#toolFields[data-scope="outlineText"] .field:not(.wide){height:58px;min-height:58px;gap:1px}
#toolFields[data-scope="outlineText"] .field:not(.wide)>label{display:flex;align-items:flex-end;height:20px;min-height:20px;line-height:1.05;white-space:normal;overflow:hidden;overflow-wrap:anywhere;hyphens:auto}
#toolFields[data-scope="outlineText"] .choice-button{height:37px;min-height:37px}
#toolFields[data-scope="outlineText"] .choice-button span{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#toolFields[data-scope="outlineText"] .field[data-slot="align"] .choice-button span{display:none}
#toolFields[data-scope="outlineText"] .checkbox-field>label{font-size:12px}
.font-field>label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.font-picker{display:grid;grid-template-columns:minmax(0,1fr) 112px;gap:6px}
.font-picker select,.font-picker button{width:100%;min-width:0;min-height:40px}
.font-picker button{padding:5px 7px}
@media(max-height:800px){#toolFields[data-scope="outlineText"] .field:not(.wide){height:51px;min-height:51px}#toolFields[data-scope="outlineText"] .field[data-slot="text"] textarea{min-height:38px;max-height:38px}#toolFields[data-scope="outlineText"] .field[data-slot="text"] .field-hint{display:none}#toolFields[data-scope="outlineText"] .choice-button{height:32px;min-height:32px}.font-picker select,.font-picker button{min-height:34px}}
/* Local interface language selector */
.settings-language{display:flex;align-items:center;gap:9px;margin-left:auto}.settings-language>span{color:var(--muted);font-size:12px;font-weight:650}.language-buttons{display:grid;grid-template-columns:repeat(4,52px);gap:5px}.language-button{min-width:0;min-height:44px;padding:5px 7px;background:#0e1317!important;border-color:var(--line)!important}.language-button.active{background:#3a3320!important;border-color:var(--accent)!important;color:#fff5cf!important;outline:2px solid var(--accent);outline-offset:-2px}@media(max-width:760px){.settings-language>span{display:none}.language-buttons{grid-template-columns:repeat(4,46px)}}@media(max-height:800px){.language-button{min-height:42px}.language-buttons{grid-template-columns:repeat(4,48px)}}
/* Rohteil, Spannmittel und Haltestege. */
.legend .tab{background:var(--accent)}







.clamp-editor{display:grid;gap:6px;margin-top:7px;padding-top:7px;border-top:1px solid var(--line)}
.clamp-editor[hidden]{display:none!important}.clamp-editor-title{display:flex;align-items:center;justify-content:space-between;gap:8px}
.clamp-editor-title strong{font-size:13px;color:#f2f6f8}
.clamp-editor-title span{padding:2px 7px;border-radius:999px;background:#1c4935;color:#bff3d5;font-size:10px;font-weight:750}
.clamp-editor.checking-disabled .clamp-editor-title span{background:#493f28;color:#ffe29a}
.clamp-editor.checking-disabled .clamp-selection-editor,.clamp-editor.checking-disabled .clamp-selection-empty{opacity:.72}
.clamp-draw-button{width:100%;min-height:42px;border-color:#d89f21;color:#ffe7a0}
.clamp-editor-hint{font-size:11px;line-height:1.2;color:var(--muted)}
.clamp-selection-empty{display:grid;place-content:center;gap:5px;min-height:88px;padding:12px;border:1px dashed #536574;border-radius:7px;color:var(--muted);text-align:center}
.clamp-selection-empty strong{color:#e4edf2;font-size:13px}
.clamp-selection-empty span{font-size:12px;line-height:1.35}
.clamp-selection-empty[hidden],.clamp-selection-editor[hidden]{display:none!important}
.clamp-selection-editor{display:grid;gap:8px;padding:8px;border:1px solid #667783;border-radius:8px;background:#10171de8}
.clamp-selection-title{display:flex;align-items:center;gap:9px;min-height:32px}
.clamp-selection-title strong{color:#fff2c7;font-size:14px}
.clamp-number{display:grid;place-items:center;flex:0 0 auto;width:30px;height:30px;border-radius:50%;background:#ff657733;border:1px solid #ff6577;color:#ffd8dc;font-weight:800}
.clamp-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 9px}
.clamp-edit-grid label{display:flex;flex-direction:column;gap:3px;min-width:0;color:var(--muted);font-size:11px;line-height:1.1}
.clamp-edit-grid input{width:100%;min-width:0;height:40px;padding:5px 8px;text-align:right;font-size:15px}
.clamp-selection-delete{width:100%;min-height:42px;color:#ffd7da;border-color:#8f4650}#previewCanvas.drawing-clamp{cursor:crosshair;outline:2px solid #ff6577;outline-offset:-2px;touch-action:none}
.clamp-draw-notice{border-color:#ff6577;background:#351f24f2}
@media(max-height:800px){.clamp-editor{gap:4px;margin-top:4px;padding-top:4px}.clamp-draw-button{min-height:36px}.clamp-editor-hint{display:none}.clamp-selection-editor{gap:6px;padding:6px}.clamp-edit-grid{gap:5px 8px}.clamp-edit-grid input{height:36px}.clamp-selection-delete{min-height:38px}}
/* Schwebender Spannmittel-Editor in der maximierten 2D-Vorschau. */
.preview{position:relative}
.clamp-workspace-button{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.clamp-workspace-button.active{background:#49302f!important;border-color:#ff6577!important;color:#ffe4e7!important}
.clamp-workspace{position:absolute;z-index:8;width:min(370px,calc(100% - 16px));max-height:calc(100% - 62px);padding:9px 10px 8px;border:1px solid #8f4650;border-radius:9px;background:#182127f5;box-shadow:0 14px 44px #000c;overflow:hidden;backdrop-filter:blur(4px)}
.clamp-workspace[hidden]{display:none!important}
.clamp-workspace .clamp-editor-title{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:7px;min-height:40px;margin:-4px -4px 2px;padding:3px 4px 5px;border-bottom:1px solid #53616a;touch-action:none;user-select:none;cursor:move}
.clamp-workspace .clamp-editor-title.dragging{cursor:grabbing;background:#222d35}
.clamp-workspace .clamp-editor-title strong{font-size:15px;color:#fff2c7}
.clamp-drag-icon{padding:0!important;background:transparent!important;color:#aebdc7!important;font-size:21px!important;line-height:1}
.clamp-field-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 8px}
.clamp-field-grid .field{min-height:46px}
.clamp-field-grid input{min-height:34px}
.clamp-workspace .clamp-draw-button{min-height:40px}
@media(max-width:980px){.clamp-workspace-button span{display:none}.clamp-workspace-button{min-width:44px;justify-content:center}}
@media(max-height:700px){.clamp-workspace{max-height:calc(100% - 54px);padding-top:7px}.clamp-workspace .clamp-editor-hint{display:none}.clamp-field-grid .field{min-height:41px}.clamp-selection-empty{min-height:72px}.clamp-edit-grid input{height:34px}}

/* Touch-Editor für das rechteckige Rohteil. */
.stock-workspace-button.active{background:#4a3b1f!important;border-color:#f0b429!important;color:#fff1bd!important}
.stock-workspace{border-color:#b98a25}
.stock-workspace .clamp-editor-title strong{color:#fff1bd}
.stock-switches{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.stock-switches label{display:flex;align-items:center;gap:7px;min-width:0;min-height:40px;padding:6px 8px;border:1px solid #44535e;border-radius:7px;background:#11191f;color:#e8edf1;font-size:12px;line-height:1.2;cursor:pointer}
.stock-switches input{flex:0 0 auto;width:23px;height:23px;margin:0;accent-color:#f0b429}
.stock-draw-button{width:100%;min-height:42px;border-color:#b98a25!important;color:#ffe6a0!important}
.stock-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 9px;padding:8px;border:1px solid #756735;border-radius:8px;background:#10171de8}
.stock-edit-grid label{display:flex;flex-direction:column;gap:3px;min-width:0;color:var(--muted);font-size:11px;line-height:1.1}
.stock-edit-grid input{width:100%;min-width:0;height:40px;padding:5px 8px;text-align:right;font-size:15px}
.stock-workspace.checking-disabled .stock-edit-grid{opacity:.72}
#previewCanvas.drawing-stock{cursor:crosshair;outline:2px solid #f0b429;outline-offset:-2px;touch-action:none}
.stock-draw-notice{border-color:#d49b20;background:#3a301cf2}
@media(max-height:700px){.stock-switches label{min-height:35px;padding:4px 6px}.stock-edit-grid{gap:5px 8px;padding:6px}.stock-edit-grid input{height:34px}.stock-draw-button{min-height:36px}}