/* CSAM FD Grafcet view */
.grafcet-doc {
    margin: 8px 0 20px;
    padding: 12px 16px;
    border: 1px solid #d8dee6;
    border-radius: 8px;
    background: #fff;
}
.grafcet-doc-header {
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid #e3e8ee;
}
.grafcet-title {
    font-size: 1.05rem;
    font-weight: 700;
    color: #1a1a1a;
    letter-spacing: 0.02em;
}
.grafcet-sub {
    margin-top: 4px;
    color: #333;
    font-weight: 600;
}
.grafcet-routine-desc {
    margin-top: 4px;
    color: #1a56a8;
    font-size: 0.95em;
    font-weight: 600;
}
.grafcet-level1-routine-desc {
    margin: 0 0 8px;
    padding: 6px 10px;
    background: #eef5e8;
    border-left: 3px solid #4a7c3a;
    color: #1e3d14;
    font-weight: 700;
    font-size: 1.02em;
}
.grafcet-meta {
    margin-top: 2px;
    color: #555;
    font-size: 0.9em;
}
.grafcet-engines {
    margin-top: 8px;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.grafcet-chip {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    background: #e8f0fe;
    color: #1a56a8;
    font-size: 0.78rem;
    font-weight: 600;
}
.grafcet-section-label {
    margin: 12px 0 8px;
    font-weight: 700;
    color: #444;
}

/* Level 1 — basic sequence description */
.grafcet-level1 {
    margin: 0 0 16px;
    padding: 12px 14px;
    background: #f7faf5;
    border: 1px solid #c5d9b8;
    border-radius: 6px;
}
.grafcet-level1-head {
    font-weight: 700;
    font-size: 1.02em;
    color: #2d5a1e;
    margin-bottom: 8px;
}
.grafcet-level1-para {
    margin: 0 0 10px;
    line-height: 1.45;
    color: #222;
}
.grafcet-level1-sub {
    font-weight: 700;
    font-size: 0.88em;
    color: #3d6b2c;
    margin: 10px 0 4px;
}
.grafcet-level1-spine,
.grafcet-level1-branches,
.grafcet-level1-faults {
    margin: 0 0 6px;
    padding-left: 1.35em;
}
.grafcet-level1-spine li,
.grafcet-level1-branches li,
.grafcet-level1-faults li {
    margin: 2px 0;
    line-height: 1.35;
}
.grafcet-level1-sn {
    font-family: ui-monospace, Consolas, monospace;
    font-weight: 700;
    color: #1a56a8;
}
.grafcet-level1-link {
    color: inherit;
    text-decoration: none;
}
.grafcet-level1-link:hover {
    text-decoration: underline;
}
.grafcet-level1-branch-intro {
    margin: 0 0 6px;
    font-size: 0.88em;
    color: #444;
    line-height: 1.4;
}
.grafcet-level1-note {
    margin: 10px 0 0;
    font-size: 0.85em;
    color: #555;
    font-style: italic;
}

/* Text / Diagram / Both layout panes */
.grafcet-diagram-pane {
    margin: 8px 0 16px;
}
.grafcet-text-pane {
    margin-top: 4px;
}
html[data-grafcet-layout="text"] .grafcet-diagram-pane {
    display: none !important;
}
html[data-grafcet-layout="diagram"] .grafcet-text-pane {
    display: none !important;
}
.grafcet-diagram-scroll {
    overflow: auto;
    max-height: min(75vh, 1100px);
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background:
        linear-gradient(#f4f6f9 1px, transparent 1px) 0 0 / 20px 20px,
        linear-gradient(90deg, #f4f6f9 1px, transparent 1px) 0 0 / 20px 20px,
        #fafbfc;
    padding: 8px;
}
.grafcet-diagram-empty {
    padding: 12px;
    color: #666;
    font-style: italic;
}
.grafcet-sfc {
    display: block;
    font-family: ui-sans-serif, system-ui, Segoe UI, sans-serif;
    min-width: 100%;
}
.grafcet-sfc-spine,
.grafcet-sfc-link,
.grafcet-sfc-action-link {
    stroke: #333;
    stroke-width: 1.5;
}
.grafcet-sfc-trans {
    stroke: #111;
    stroke-width: 3.5;
    stroke-linecap: square;
}
.grafcet-sfc-step {
    fill: #fff;
    stroke: #222;
    stroke-width: 2;
    cursor: pointer;
}
.grafcet-sfc-step:hover {
    fill: #e8f0fe;
}
.grafcet-sfc-step-outer {
    fill: none;
    stroke: #222;
    stroke-width: 1.5;
}
.grafcet-sfc-step-num {
    fill: #111;
    font-size: 13px;
    font-weight: 700;
    pointer-events: none;
}
.grafcet-sfc-title {
    fill: #1a56a8;
    font-size: 11px;
    font-weight: 600;
}
.grafcet-sfc-action-box {
    fill: #fff;
    stroke: #5a6a7a;
    stroke-width: 1.25;
}
.grafcet-sfc-action-label {
    fill: #666;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.06em;
    font-family: Calibri, "Segoe UI", sans-serif;
}
.grafcet-sfc-action-text {
    fill: #222;
    font-size: 11px;
    font-family: ui-monospace, Consolas, monospace;
}
.grafcet-sfc-action-off {
    fill: #666;
    font-size: 11px;
    font-family: ui-monospace, Consolas, monospace;
    text-decoration: line-through;
}
.grafcet-sfc-action-fault {
    fill: #842029;
    font-size: 11px;
    font-family: ui-monospace, Consolas, monospace;
}
.grafcet-sfc-action-strike {
    stroke: #666;
    stroke-width: 1;
}
.grafcet-sfc-cond {
    fill: #333;
    font-size: 11px;
    font-family: ui-monospace, Consolas, monospace;
}
.grafcet-sfc-jump {
    fill: #a33;
    font-size: 12px;
    font-weight: 700;
}
.grafcet-sfc-entry {
    fill: #a33;
    font-size: 11px;
    font-weight: 700;
    font-family: ui-monospace, Consolas, monospace;
}
.grafcet-sfc-entry-tick {
    stroke: #a33;
    stroke-width: 1.5;
}
.grafcet-sfc-fault-note {
    fill: #842029;
    font-size: 11px;
    font-style: italic;
}

.grafcet-step {
    margin: 0 0 16px;
    padding: 10px 12px;
    border-left: 4px solid #3d7dd6;
    background: #f8fafc;
    border-radius: 0 6px 6px 0;
}
.grafcet-step-head {
    font-weight: 700;
    margin-bottom: 6px;
}
.grafcet-sn {
    color: #1a56a8;
    font-family: ui-monospace, Consolas, monospace;
}
.grafcet-step-title {
    color: #222;
}
.grafcet-steptime {
    margin-left: 10px;
    font-size: 0.82rem;
    font-weight: 600;
    color: #5a6a7a;
    white-space: nowrap;
}
.grafcet-bingo-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 0 5px;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #1a56a8;
    border: 1px solid #9bb6d9;
    border-radius: 3px;
    text-transform: uppercase;
    vertical-align: middle;
}
.grafcet-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #666;
    margin-bottom: 4px;
}
.grafcet-actions ul {
    margin: 0;
    padding-left: 1.2em;
}
.grafcet-actions li {
    margin: 2px 0;
    font-size: 0.92em;
}
.grafcet-action-off,
.grafcet-action-off-li .grafcet-action-text,
.grafcet-action-off-li .grafcet-desc {
    text-decoration: line-through;
    color: #666;
}
.grafcet-desc {
    color: #666;
    font-size: 0.88em;
}
.grafcet-transitions {
    margin-top: 8px;
}
.grafcet-go-block {
    margin-top: 10px;
    padding: 8px 10px;
    background: #fff;
    border: 1px solid #d5deea;
    border-radius: 6px;
}
.grafcet-conds {
    margin-bottom: 6px;
}
.grafcet-cond-row {
    font-size: 0.9em;
    margin: 2px 0;
    line-height: 1.35;
}
.grafcet-cond-kw {
    display: inline-block;
    min-width: 3.6em;
    font-weight: 700;
    color: #1a56a8;
}
.grafcet-cond-text {
    color: #222;
}
.grafcet-goto {
    margin-top: 4px;
    font-weight: 700;
    color: #0d5c2e;
    font-size: 0.95em;
}
.grafcet-goto-sn {
    font-weight: 600;
    color: #3d7dd6;
    font-family: ui-monospace, Consolas, monospace;
}
.grafcet-faults {
    margin-top: 12px;
    padding-top: 8px;
    border-top: 1px dashed #e0a8a8;
}
.grafcet-faults .grafcet-label {
    color: #a33;
}
.grafcet-faults-with-actions {
    margin-top: 6px;
    padding-top: 0;
    border-top: none;
}
.grafcet-action-faultmon .grafcet-action-text,
.grafcet-action-faultmon .grafcet-fault-text {
    color: #842029;
}
.grafcet-faults ul {
    margin: 0;
    padding-left: 1.2em;
}
.grafcet-fault-text {
    color: #842029;
}
.grafcet-engine-faults {
    margin-top: 18px;
    padding: 12px 14px;
    background: #fff8f8;
    border: 1px solid #f0c4c4;
    border-radius: 6px;
}
.grafcet-engine-faults-head {
    font-weight: 700;
    font-size: 1.05em;
    color: #a33;
    margin-bottom: 10px;
    letter-spacing: 0.02em;
}
.grafcet-fault-block {
    margin: 0 0 12px;
    padding: 10px 12px;
    background: #fff;
    border-left: 3px solid #c44;
    border-radius: 4px;
}
.grafcet-fault-block:last-child {
    margin-bottom: 0;
}
.grafcet-fault-title {
    font-weight: 700;
    color: #842029;
    margin-bottom: 6px;
}
.grafcet-fault-actions .grafcet-label {
    color: #a33;
}
.grafcet-trans {
    margin: 4px 0;
    padding: 6px 10px;
    background: #fff;
    border: 1px dashed #b8c4d4;
    border-radius: 4px;
    font-size: 0.9em;
    color: #333;
}
.grafcet-empty {
    padding: 12px 14px;
    color: #666;
    font-style: italic;
    background: #f7f9fc;
    border-radius: 6px;
    border: 1px dashed #d0d7e0;
}
.step-engines-badge {
    margin-top: 4px;
}
.fd-view-grafcet {
    margin-top: 4px;
}

@media print {
    .pdf-hide-element,
    #fd-view-mode-bar,
    #zoom-container,
    #search-container,
    #ace-copyright-footer {
        display: none !important;
    }
    .grafcet-doc {
        border: none;
        padding: 0;
    }
    .grafcet-step {
        break-inside: avoid;
        page-break-inside: avoid;
        border-left: 3px solid #333;
        background: #fff;
    }
    .grafcet-go-block {
        break-inside: avoid;
        border-color: #999;
    }
    .grafcet-fault-block {
        break-inside: avoid;
        page-break-inside: avoid;
    }
    .grafcet-diagram-scroll {
        max-height: none;
        overflow: visible;
        break-inside: avoid;
    }
    .grafcet-action-off,
    .grafcet-action-off-li .grafcet-action-text,
    .grafcet-action-off-li .grafcet-desc {
        text-decoration: line-through;
        color: #444;
    }
}
