.signal-controls{background:#eef4fb;border-left:4px solid #ffcf09;border-radius:8px;padding:18px 20px;margin-bottom:24px;display:flex;flex-wrap:wrap;gap:12px 22px;align-items:center}.signal-controls>div{flex:1;min-width:220px}.signal-controls p{font-size:14px}.signal-controls .signal-source{flex-basis:100%;font-size:12px;margin:0}.signal-state{font-weight:600;color:#0752b2}.signal-toggle,.signal-controls button{border:0;border-radius:22px;background:#ffcf09;color:#061d3d;padding:9px 14px;font:600 13px/1.3 var(--body);cursor:pointer}.signal-demo{display:flex;align-items:center;flex-direction:column;gap:4px;min-width:90px;margin:8px auto;max-width:220px}.signal-picture{display:block;width:var(--signal-width);max-width:100%;height:auto;max-height:176.25px;flex-shrink:0}.signal-off{opacity:0}.signal-book.phase-off .signal-demo.is-playing .signal-off{opacity:1}.signal-demo .signal-toggle[hidden],.signal-controls button[hidden]{display:none}.signal-toggle:focus-visible,.signal-controls button:focus-visible{outline:3px solid #0752b2;outline-offset:3px}@media(prefers-reduced-motion:reduce){.signal-book.phase-off .signal-demo.is-playing .signal-off{opacity:0}}@media print{.signal-off{opacity:0!important}.signal-toggle,.signal-controls{display:none!important}}



/* Light signals share one height, independent of icon and imported image rules. */
.published-page .page-rich-content .signal-book .signal-light{height:150px;width:auto;max-height:none;max-width:none;min-width:0;object-fit:contain;margin:4px auto;border-radius:0}
.signal-demo:has(.signal-light){max-width:none}
.published-page .page-rich-content .signal-book .signal-source-crop{display:block;overflow:hidden;margin:4px auto;height:160px;width:auto;max-width:100%}
.published-page .page-rich-content .signal-book .signal-source-crop.signal-light{height:150px}

.signal-wide{max-width:320px;min-width:220px}.signal-wide .signal-picture{max-height:none}
.signal-opposite{opacity:0}.signal-book:not(.phase-off) .signal-demo.is-playing .signal-opposite{opacity:1}
@media(prefers-reduced-motion:reduce){.signal-book .signal-demo .signal-opposite{opacity:0!important}}
@media print{.signal-opposite{opacity:0!important}}

/* One shared grid, including tables with day/night subcolumns. */
.published-page .page-rich-content .signal-book figure{width:100%;overflow-x:auto}
.published-page .page-rich-content .signal-book table{display:table;table-layout:fixed;width:100%;min-width:760px}
.published-page .page-rich-content .signal-book th,.published-page .page-rich-content .signal-book td{min-width:0;overflow-wrap:break-word}

/* Official replacement drawing for 221: the obsolete low variant is absent. */
.published-page .page-rich-content .signal-book img[src$="stcrt-2022-28278-012.png"]{display:block;margin:4px auto;height:150px;width:auto;max-width:100%;object-fit:contain;border-radius:0}

/* One stripe per complete signal, including any day/night continuation rows. */
.published-page .page-rich-content .signal-book tbody tr[data-signal-tone="white"]{background:#fff}
.published-page .page-rich-content .signal-book tbody tr[data-signal-tone="blue"]{background:#f1f5f9}
.published-page .page-rich-content .signal-book tbody tr[data-signal-tone]>td{background:inherit}

.signal-book .etcs-markers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;justify-items:center;gap:18px 24px;max-width:250px;margin:10px auto}
.signal-book .etcs-marker{display:block;width:auto;height:140px;max-width:100%;overflow:hidden}
.signal-book .etcs-marker:nth-child(5){grid-column:1 / -1}
.signal-book .etcs-marker.etcs-marker-board{height:78px}
