:root{--bg:#0a0a0a;--surface:#141414;--surface2:#1c1c1c;--border:#2e2e2e;--text:#f4f4f4;--muted:#9a9a9a;--accent:#1c69d4;--ok:#22c55e;--bad:#ef4444;--warn:#f59e0b;--cmd:#3b82f6}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI","Noto Sans CJK TC","PingFang TC","Microsoft JhengHei",sans-serif;background:var(--bg);color:var(--text);font-size:14px}
.accent{height:4px;background:linear-gradient(90deg,#0653b6,#1c69d4 35%,#4d9ae8 50%,#1c69d4 65%,#0653b6)}
header{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg);z-index:5}
header h1{font-weight:300;letter-spacing:.12em;font-size:1.15rem;margin:0 8px 0 0}
.pill{display:inline-flex;gap:6px;align-items:center;border:1px solid var(--border);border-radius:999px;padding:2px 10px;font-size:12px;background:var(--surface2)}
.pill.muted{color:var(--muted)} .pill.warn{border-color:var(--warn);color:var(--warn)}
.pill .dot{width:8px;height:8px;border-radius:50%;background:#666}
#conn.ok .dot{background:var(--ok);box-shadow:0 0 6px var(--ok)} #conn.bad .dot{background:var(--bad)}
nav{display:flex;gap:4px;overflow-x:auto;padding:6px 12px;border-bottom:1px solid var(--border);position:sticky;top:41px;background:var(--bg);z-index:4}
nav button{flex:0 0 auto;background:var(--surface2);color:var(--text);border:1px solid var(--border);border-radius:2px;padding:6px 12px;font-size:13px;cursor:pointer}
nav button.active{background:var(--accent);border-color:var(--accent)}
nav button .alm{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:6px;background:transparent}
nav button .alm.on{background:var(--bad);box-shadow:0 0 6px var(--bad)}
main{padding:12px 14px 48px;display:grid;grid-template-columns:repeat(auto-fill,minmax(440px,1fr));gap:14px;align-items:start}
@media (max-width:520px){main{grid-template-columns:1fr;padding:8px}}
.card{background:var(--surface);border:1px solid var(--border);border-radius:2px;padding:8px 10px}
.card h3{margin:0 0 6px;font-size:13px;font-weight:600;letter-spacing:.04em;color:#cbd5e1}
.card .note{color:var(--muted);font-size:11px;margin:0 0 6px}
.lamps{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}
.lamp{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px 0 5px;border-radius:999px;border:1px solid color-mix(in srgb,var(--ok) 40%,var(--border));background:#111;font-size:11.5px;white-space:nowrap;color:#94a3b8}
.lamp i{width:8px;height:8px;border-radius:50%;border:1px solid #64748b;background:#334155}
.lamp b{font-family:ui-monospace,"DejaVu Sans Mono",monospace;font-weight:500;font-size:10px;opacity:.8}
.lamp.on{background:var(--ok);color:#0b1220;border-color:transparent;font-weight:700;box-shadow:0 0 6px rgba(34,197,94,.5)}
.lamp.on i{background:#0b1220;border-color:#0b1220}
.lamp.alarm{border-color:color-mix(in srgb,var(--bad) 50%,var(--border))}
.lamp.alarm.on{background:var(--bad);color:#fff;box-shadow:0 0 6px rgba(239,68,68,.6)} .lamp.alarm.on i{background:#fff;border-color:#fff}
.lamp.cmdl{border-color:color-mix(in srgb,var(--cmd) 45%,var(--border))} .lamp.cmdl.on{background:var(--cmd);color:#fff}
.lamp.stale{opacity:.45}
.cmds{display:flex;flex-wrap:wrap;gap:6px}
.btn{display:inline-flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:92px;padding:6px 10px;border:1px solid var(--cmd);background:color-mix(in srgb,var(--cmd) 18%,var(--surface2));color:var(--text);border-radius:2px;font-size:13px;cursor:pointer;text-align:left}
.btn small{font-family:ui-monospace,monospace;font-size:10px;color:#93c5fd}
.btn .mode{font-size:10px;color:var(--muted)}
.btn:disabled{cursor:not-allowed;border-color:#3f3f46;background:#18181b;color:#71717a}
.btn:disabled small{color:#71717a}
.btn.risk-H:not(:disabled){border-color:var(--warn)}
.btn.forbid{border-style:dashed}
.btn.danger{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 25%,var(--surface2))}
.pend{font-size:10px;color:var(--warn)}
.feeders{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:6px;grid-column:1/-1}
.fe{background:var(--surface);border:1px solid var(--border);padding:6px;border-radius:2px}
.fe.offline{opacity:.6}
.fe h4{margin:0 0 4px;font-size:12px;display:flex;justify-content:space-between}
.fe h4 b{font-family:ui-monospace,monospace;font-weight:400;color:var(--muted);font-size:10px}
.fe .lamps{gap:3px;margin-bottom:4px}
.fe .lamp{height:17px;font-size:10.5px;padding:0 5px 0 4px}
.fe .btn{min-width:0;padding:3px 6px;font-size:11px}
.full{grid-column:1/-1}
dialog{background:var(--surface);color:var(--text);border:1px solid var(--warn);max-width:min(560px,94vw)}
dialog h2{font-size:16px;margin:0 0 8px} dialog table{font-size:12px;border-collapse:collapse} dialog td{padding:3px 6px;border-bottom:1px solid var(--border);vertical-align:top}
.dlg-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
#stats{font-family:ui-monospace,monospace;font-size:11px;color:var(--muted);white-space:pre-wrap}

.btn.toggle .tstate{font-size:10px;color:var(--warn)}
.btn.toggle.is-on{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 22%,var(--surface2))}
table.wr{border-collapse:collapse;font-size:12px;width:100%} table.wr td,table.wr th{border-bottom:1px solid var(--border);padding:3px 6px;text-align:left;font-family:ui-monospace,monospace}
table.wr tr.bad td{color:var(--bad)}

.grpgrid{display:flex;flex-direction:column;gap:6px}
.grow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;border:1px solid var(--border);border-radius:6px;padding:6px}
.grow.all{border-color:var(--warn)}
.gname{min-width:120px;display:flex;flex-direction:column} .gname small{font-size:10px;color:var(--muted)}
.goff{font-size:11px;color:var(--ok);min-width:120px} .goff.bad,.badtxt{color:var(--bad)}
.pill.bad{border-color:var(--bad);color:var(--bad)}
.lamps.reeds .lamp.reed{font-weight:600}

.btn.fl-ok{box-shadow:0 0 0 3px var(--ok)!important;background:color-mix(in srgb,var(--ok) 35%,var(--surface2))!important}
.btn.fl-bad{box-shadow:0 0 0 3px var(--bad)!important;background:color-mix(in srgb,var(--bad) 35%,var(--surface2))!important}
.toast{position:fixed;right:12px;bottom:12px;display:flex;flex-direction:column;gap:6px;z-index:99;max-width:min(92vw,420px)}
.tmsg{padding:8px 12px;border-radius:6px;font-size:13px;background:#14301c;border:1px solid var(--ok);color:#d1fae5}
.tmsg.bad{background:#3a1414;border-color:var(--bad);color:#fecaca}

/* --- function-block layout (Troy 2026-10-11) --- */
.card.fb{padding:0;border-radius:6px;overflow:hidden;border-color:#333;min-width:0}
.card.wide{grid-column:span 2}
@media (max-width:960px){.card.wide{grid-column:auto}}
.fbh{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;background:linear-gradient(90deg,#16243a,#141414);border-bottom:1px solid #2b3a52;border-left:3px solid var(--accent)}
.fbh h3{margin:0;font-size:14px;font-weight:600;color:#e2e8f0;letter-spacing:.04em}
.fbh .cnt{font-size:11px;color:var(--muted);white-space:nowrap}
.stid{display:inline-block;background:var(--accent);color:#fff;border-radius:3px;padding:0 6px;margin-right:6px;font-size:11px}
.card.fb>.note,.card.fb>.lamps{margin:8px 12px 0}
.card.fb>.lamps.grid,.card.fb>.cmds.grid{padding:0 12px 10px}
.sec{padding:8px 12px 10px}
.sec+.sec{border-top:1px dashed #333}
.sec.cm{background:#101722}
.sech{display:flex;align-items:baseline;gap:8px;font-size:11px;font-weight:700;letter-spacing:.08em;color:#94a3b8;margin:8px 12px 6px}
.sec .sech{margin:0 0 6px}
.sech em{font-style:normal;font-weight:400;color:#64748b;letter-spacing:0}
.takeseq .sech{flex-wrap:wrap}.takeseq .sech em{color:#e2e8f0;font-size:12px;font-weight:600}   /* v46: take-out step names beside the title */
.sec.cm .sech span{color:#93c5fd}
.subg{display:grid;grid-template-columns:72px 1fr;gap:8px;align-items:start;padding:4px 0}
.subg+.subg{border-top:1px solid #1f1f1f}
.subl{font-size:11px;color:var(--muted);padding-top:3px;border-left:2px solid #475569;padding-left:6px}
.subl.alarm{border-color:var(--bad);color:#fca5a5} .subl.done{border-color:var(--ok)} .subl.sense{border-color:#a78bfa}
.lamps.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:5px;margin:0}
.lamps.grid .lamp{justify-content:space-between;height:24px;border-radius:4px;min-width:0}
.lamp .ln{overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.lamp b{background:rgba(255,255,255,.07);border-radius:999px;padding:0 5px;flex:0 0 auto}
.lamp.on b{background:rgba(0,0,0,.18)}
.cmds.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}
.cmds.grid .btn{min-width:0;width:100%}
.btn>span:first-child{font-weight:600}
.sectitle{font-size:13px;font-weight:700;color:#cbd5e1;padding:6px 2px 0;border-bottom:1px solid var(--border)}
.fe{border-radius:6px;padding:0 0 6px}
.fe h4{background:#1a2230;padding:5px 8px;margin:0 0 4px;border-bottom:1px solid #2b3a52}
.fe>[data-l]{display:grid;grid-template-columns:34px 1fr;padding:2px 8px;margin:0;gap:4px}
.fe>[data-l]::before{content:attr(data-l);font-size:10px;color:var(--muted);padding-top:2px;grid-row:1/99}
.fe>.lamps[data-l]>*,.fe>.cmds[data-l]>*{grid-column:2}
.fe>[data-l]{display:flex;flex-wrap:wrap;gap:3px}
.fe>[data-l]::before{flex:0 0 30px}
.fe>.cmds[data-l]{border-top:1px dashed #333;padding-top:5px;margin-top:3px}
.fe .lamp b{display:none}
@media (max-width:520px){main{grid-template-columns:1fr;padding:8px;gap:10px}.subg{grid-template-columns:1fr;gap:3px}.lamps.grid,.cmds.grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}
.lamps.grid .lamp{height:auto;min-height:24px;padding-top:2px;padding-bottom:2px;white-space:normal;line-height:1.25}
.lamps.grid .lamp .ln{overflow:visible;text-overflow:clip;word-break:break-word}
.cmds.grid .btn span{white-space:normal;word-break:break-word}
.fe .lamp{white-space:nowrap}

/* jog section */
.sec.jog{background:#17140c;border-top:1px solid #4a3a12!important}
.sec.jog .sech span{color:#fbbf24}
.subl.jog{border-color:#f59e0b;color:#fcd34d}
.jogtbl{display:flex;flex-direction:column;gap:6px;max-width:520px}
.jogrow{display:grid;grid-template-columns:70px 1fr 1fr;gap:6px;align-items:stretch}
.jogk{display:flex;align-items:center;justify-content:center;font-family:ui-monospace,monospace;font-size:13px;font-weight:700;color:#fcd34d;border:1px solid #4a3a12;border-radius:4px;background:#0f0d08}
.btn.jogb{width:100%;min-width:0;border-color:#d97706;background:color-mix(in srgb,#f59e0b 14%,var(--surface2))}
.btn.jogb.pos{align-items:flex-end;text-align:right}

/* v25 rail live readback (read-only) */
.sec.readback .rbtbl{display:grid;grid-template-columns:150px minmax(0,1fr);gap:4px 8px;align-items:center}
.rbrow{display:contents} .rbk small{display:block;opacity:.6;font-size:11px}
.rbv.bad{color:var(--warn)}
.rbbits{display:flex;flex-wrap:wrap;gap:4px} .rbbit{padding:2px 8px;border-radius:10px;font-size:12px;background:#1f2937;color:#6b7280;border:1px solid #374151}
.rbbit.on{background:#065f46;color:#d1fae5;border-color:#10b981} .rbbit.alarm.on{background:#7f1d1d;color:#fee2e2;border-color:#ef4444}
/* v24 rail teach (press-and-hold) + station speed DMs */
.sec.teach .teachtbl{display:grid;gap:4px}
.teachrow{display:grid;grid-template-columns:90px 110px minmax(0,1fr);gap:8px;align-items:center}
.tpt b{display:block} .tpt small,.spk small{color:var(--muted);font-family:ui-monospace,monospace;font-size:10px}
.dmv{font-family:ui-monospace,monospace;font-size:16px;color:#e5e7eb} .dmv.zero{color:var(--warn)} .dmv.chg{animation:dmchg 1.2s}
@keyframes dmchg{from{color:var(--ok);text-shadow:0 0 8px var(--ok)}to{}}
.btn.hold{position:relative;min-width:0;width:100%;max-width:360px;touch-action:none;user-select:none;-webkit-user-select:none}
.btn.hold .hbar{display:block;width:100%;height:6px;background:#222;border-radius:3px;overflow:hidden;margin-top:3px}
.btn.hold .hbar i{display:block;height:100%;width:0;background:var(--warn)}
.btn.hold.holding{border-color:var(--warn)} .btn.hold.done .hbar i{background:var(--ok)} .btn.hold.done{border-color:var(--ok)}
.btn.hold .hst{font-size:10px;color:var(--muted)}
.btn.teachb{min-width:0;width:100%;max-width:360px} .btn.teachb .hst{display:block;font-size:10px;color:var(--muted)}
.card.speed .spdtbl{display:grid;gap:6px}
.card.speed .spdtbl{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.card.speed.wide .spdtbl{grid-template-columns:repeat(auto-fit,minmax(560px,1fr))}  /* v36: LF1 two-axis speed card (6 items) */
.spdrow{display:grid;grid-template-columns:minmax(0,1fr) 110px 100px auto;gap:6px;align-items:center;border:1px solid var(--border);padding:6px}
.spin{background:#0f0f0f;color:var(--text);border:1px solid var(--border);border-radius:2px;padding:6px;font-size:14px;width:110px}
@media (max-width:600px){.card.speed .spdtbl{grid-template-columns:1fr}.spdrow{grid-template-columns:minmax(0,1fr) 90px;}.spdrow .spin{width:100%}.teachrow{grid-template-columns:70px 80px minmax(0,1fr)}}
/* rail Servo ON/OFF section (latched_init MC_Power Enable bit; is-act = current PLC level matches this button) */
.sec.servo{background:#0d1512;border-top:1px solid #1f4a35!important}
.sec.servo .sech span{color:#4ade80}
.servorow{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.btn.servob{width:100%;min-width:0;padding:10px 12px}
.btn.servob.son{border-color:var(--ok)} .btn.servob.soff{border-color:var(--bad)}
.btn.servob.son.is-act{background:color-mix(in srgb,var(--ok) 35%,var(--surface2))}
.btn.servob.soff.is-act{background:color-mix(in srgb,var(--bad) 35%,var(--surface2))}

/* sub-module inside a function card (S1 S1_ROBOT_ACTION inside the Epson robot card) */
.fbsub{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;padding:6px 12px;background:#121a27;border-top:1px solid #2b3a52;border-bottom:1px solid #2b3a52;border-left:3px solid #a78bfa}
.fbsub h4{margin:0;font-size:13px;font-weight:600;color:#ddd6fe}
.fbsub .cnt{font-size:11px;color:var(--muted)}
/* 勾選群組控制 (selected-feeder group write) */
.selp .selh{display:flex;align-items:center;gap:6px;margin:8px 12px 0;flex-wrap:wrap} .selh small{color:var(--muted);font-size:10px}
.selp .selsite{margin:0 0 4px} .selp .selsite+.selsite{border-top:1px solid var(--border)}
.selrow{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:4px 12px}
.selfe{display:inline-flex;align-items:center;gap:3px;border:1px solid var(--border);border-radius:4px;padding:2px 5px;font-size:12px;cursor:pointer}
.selfe small{color:var(--muted);font-size:9px;margin-left:2px} .selfe .lamp{padding:0;border:0;background:none} .selfe .lamp .ln,.selfe .lamp b{display:none}
.selfe:has(input:checked){border-color:var(--warn)}
.selcnt{font-size:11px;color:var(--warn);margin-left:6px}
.btn.sm{padding:2px 8px;font-size:11px;min-width:0}
.selp .selcmds{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 10px}
/* rail Move to Position A/B/C */
.sec.move{background:#0c1417;border-top:1px solid #12404a!important}
.sec.move .sech span{color:#22d3ee}
.movetbl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-width:520px}
.btn.moveb{width:100%;min-width:0;border-color:#0891b2;background:color-mix(in srgb,#06b6d4 14%,var(--surface2))}

/* v27 rail columns: 左軌道車 left, 右軌道車 right; stack on narrow screens */
.railpair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.railpair>.card.railcol{grid-column:auto}
@media (max-width:960px){.railpair{grid-template-columns:1fr}}

.btn.moveb .movepos{display:block;font-size:.95em;font-variant-numeric:tabular-nums;opacity:.9}

/* v29 S4 G4 Feeder AUX */
.faux .fauxgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px;margin-top:8px}
.faux .fauxseq{border:1px solid var(--border);border-radius:8px;padding:8px;display:flex;flex-direction:column;gap:6px}
.faux .fauxh{display:flex;justify-content:space-between;align-items:baseline} .faux .fauxh small{opacity:.7}
.faux .fauxsteps{display:flex;flex-wrap:wrap;gap:4px}
.faux .lamp.stepl{height:24px;font-size:12px} .faux .lamp.stepl.on{background:#f59e0b;color:#0b1220;box-shadow:0 0 8px rgba(245,158,11,.7)}
.faux .lamp.busyl.on{background:#3b82f6;color:#fff}
.faux .fauxcmds .btn .lamp{margin-top:3px;height:15px;font-size:10px}
.faux .fauxauto{border-color:#3b82f6}
/* v33 (Troy 2026-10-14): compact teach-point buttons (CSS only; bits/behavior unchanged) */
.sec.teach .teachtbl{gap:2px}
.sec.teach .teachrow{grid-template-columns:80px 100px auto;gap:6px}
.sec.teach .btn.teachb{width:auto;max-width:220px;min-height:0;padding:3px 10px;font-size:12px;line-height:1.2;display:inline-flex;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:2px 6px;justify-self:start}
.sec.teach .btn.teachb small{font-size:10px}
.sec.teach .btn.teachb .hst{display:block;flex-basis:100%;font-size:9px}
.faux .fauxhd{cursor:pointer;flex-wrap:wrap;justify-content:flex-start;user-select:none} .faux .fauxhd h3::before{content:'\25BE ';opacity:.7} .faux.collapsed .fauxhd h3::before{content:'\25B8 '}
.faux .fauxhd .cnt{margin-right:auto} .faux .fauxhl{display:inline-flex;flex-wrap:wrap;gap:3px} .faux .fauxhl .lamp{height:17px;font-size:10px;padding:0 5px 0 4px}
.faux.collapsed>:not(.fbh){display:none}
.faux .fauxcmds .btn,.faux .fauxskip .btn{min-width:0;padding:3px 7px;font-size:12px} .faux .fauxseq{padding:6px;gap:4px}
a.navlink{color:var(--text);text-decoration:none;background:var(--accent);border-color:var(--accent)} /* v37 header link to /cameras */

/* ---- v40 LF1 typed-target direct move */
.sec.goto .gotorow{grid-template-columns:minmax(0,1fr) 90px 110px auto}
.btn.gotob{border-color:#0891b2;background:color-mix(in srgb,#06b6d4 14%,var(--surface2))}
@media (max-width:600px){.sec.goto .gotorow{grid-template-columns:minmax(0,1fr) 80px}.sec.goto .gotorow .spin{width:100%}}
/* ---- v39 LF1 block layout (numbered blocks, bordered sub-blocks) */
.lfblock{margin-bottom:0;border-color:#3b4f6e!important}
.lfblock>.fbh{background:linear-gradient(90deg,#1b2f50,#141414);border-left-width:5px}
.lfno{display:inline-block;min-width:22px;margin-right:8px;color:#7dd3fc;font-weight:700}
.lfblock .sec{margin:10px 12px;border:1px solid #2b3a52!important;border-radius:6px}
.lfblock .sec+.sec{border-top:1px solid #2b3a52}
.lfblock .sec.jog{border-color:#4a3a12!important}.lfblock .sec.servo{border-color:#1f4a35!important}.lfblock .sec.move{border-color:#12404a!important}
.lfblock .sec.lfsub{background:#0f1520}
.lfblock .sech span{font-size:12px}
.lfgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) minmax(0,.9fr);gap:0 4px;padding:0 2px 4px;align-items:start}
.lfcol{min-width:0}
@media (max-width:1100px){.lfgrid{grid-template-columns:1fr}}
.lfov{display:grid;gap:6px}.lfovrow{display:grid;grid-template-columns:62px minmax(0,1fr);gap:6px;align-items:center}
.lfrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;margin:4px 0}
.lfrow .btn{min-height:0;width:auto;padding:4px 12px;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.lfrow .btn small{font-size:10px}.lfrow .btn .tstate{font-size:11px}
.lfrow .lamp{justify-self:start}
.lfblock .jogb span{font-size:15px;font-weight:700}
.lfblock .jogk{font-size:15px;font-weight:700}
.lfdi{display:grid;grid-template-columns:70px 1fr 1fr;gap:4px 8px;align-items:center;font-size:12px}
.lfdi b{font-size:11px;color:#94a3b8;font-weight:600}.lfl{display:flex}
.lfcyl{color:#cbd5e1}
.lfpair{gap:0 10px;margin-top:10px}.lfpair>.card{margin:0}
.lfblock+.lfblock,.lfpair+.lfblock,.lfblock+.lfpair{margin-top:12px}
.lfcols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 10px}
@media (max-width:960px){.lfcols{grid-template-columns:1fr}}
.lfspd{grid-template-columns:1fr!important}
.lfrbh{margin:10px 12px 0;font-size:12px;font-weight:700;color:#7dd3fc}
.lfrbcol .sec.readback{margin-top:6px}
.lfrs{padding:6px 0 0}

/* v41 LF1_AUX block */
.auxsh{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.auxshrow{display:grid;grid-template-columns:150px minmax(0,auto) minmax(0,1fr);gap:8px;align-items:center;border-top:1px solid #1f2937;padding-top:6px}
.auxshrow .btn{min-height:0;padding:6px 10px}
.auxshrow .spdrow{margin:0}
.auxcy{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}
.auxsteps{margin:6px 0}.auxsteps .rbbit{min-width:22px;text-align:center}
.auxsteplist{margin:4px 0 8px 22px;padding:0;font-size:12px;color:#9ca3af;columns:2}
.auxstepv{font-size:1.2em;color:#fde68a}
@media (max-width:900px){.auxshrow{grid-template-columns:1fr}.auxsteplist{columns:1}}
.sec.teach .teachrow{grid-template-columns:90px 90px auto 100px auto}.sec.teach .tpin{width:90px;padding:3px 5px;font-size:13px}.sec.teach .tpwb{min-width:0;padding:3px 8px;font-size:12px}
.faux.cyc .fauxsteps .lamp.stepl{min-width:0}
.ver .vertbl{display:grid;gap:3px;margin-top:6px}.ver .verrow{display:grid;grid-template-columns:minmax(150px,1.3fr) 80px minmax(150px,1.2fr) minmax(150px,1.2fr) minmax(130px,1fr) minmax(200px,1.6fr);gap:8px;align-items:center;padding:3px 6px;border-radius:3px;background:#101418;font-size:13px}
.ver .verhd{background:none;color:var(--muted);font-size:11px}.ver .verrow.bad{background:#2a1214;outline:1px solid #7f1d1d}.ver .vd{font-family:ui-monospace,monospace;color:var(--muted);font-size:11px}
.ver .vs.ok{color:#4ade80}.ver .vs.bad{color:#f87171;font-weight:bold}.ver .vs.none{color:var(--muted)}.ver small{color:var(--muted)}.ver .vk{border:1px solid var(--border);border-radius:8px;padding:0 5px;margin-left:4px}
.ver .vk.self{color:#60a5fa}.ver .verbad{color:#f87171;font-weight:bold}.ver .verok{color:#4ade80}#tabs button.verbadtab{color:#f87171;border-color:#7f1d1d}
@media (max-width:900px){.ver .verrow{grid-template-columns:1fr 1fr}}

/* v47 compact LF1 take-out (⑦) / chain (⑧) cards: smaller buttons, fonts and spacing */
.lfcompact>.fbh{padding:4px 10px}.lfcompact .fbh h3{font-size:12.5px}.lfcompact .fbh .cnt{font-size:10.5px}
.lfcompact .sec{margin:5px 8px;padding:5px 8px 6px}
.lfcompact .sech{margin:0 0 3px;font-size:10px;gap:6px}.lfcompact .sech span{font-size:11px}.lfcompact .sech em{font-size:10px}
.lfcompact>.note,.lfcompact .note{font-size:10.5px;line-height:1.3;margin:3px 8px 0}.lfcompact .sec .note{margin:3px 0 0}
.lfcompact .lamps{gap:3px;margin-bottom:3px}.lfcompact .lamp{height:17px;font-size:10.5px;padding:0 5px 0 4px;gap:3px}.lfcompact .lamp b{font-size:9px;padding:0 4px}.lfcompact .lamp i{width:7px;height:7px}
.lfcompact .btn{padding:3px 8px;font-size:11.5px;min-width:0;gap:0;min-height:0}.lfcompact .btn small{font-size:9px}.lfcompact .btn .mode{font-size:9px}
.lfcompact .btn.servob{padding:4px 8px}.lfcompact .servorow{gap:5px}
.lfcompact .auxsh{gap:2px;margin-top:3px}.lfcompact .auxshrow{grid-template-columns:132px minmax(0,auto) minmax(0,1fr);gap:6px;padding-top:2px}.lfcompact .auxshrow .btn{padding:3px 8px}
.lfcompact .cmds{gap:4px}.lfcompact .cmds.grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:4px}
.lfcompact .auxcy{gap:5px;margin:3px 0}
.lfcompact .auxsteps{margin:3px 0}.lfcompact .auxsteps .rbbit{min-width:18px}
.lfcompact .auxsteplist{font-size:10.5px;margin:2px 0 3px 18px;columns:3}
.lfcompact .rbbit{padding:1px 6px;font-size:10.5px}.lfcompact .rbbits{gap:3px}
.lfcompact .spdrow{grid-template-columns:minmax(0,1fr) 92px 70px auto;gap:4px;padding:3px 6px;margin-top:3px}
.lfcompact .spin{padding:3px 5px;font-size:12px;width:92px}.lfcompact .spk b{font-size:12px}.lfcompact .spk small{font-size:9.5px}.lfcompact .spcur{font-size:11px}
.lfcompact .rbk{font-size:11px;margin:3px 0 2px}.lfcompact .rbk small{font-size:9.5px}
@media (max-width:900px){.lfcompact .auxshrow{grid-template-columns:1fr}.lfcompact .auxsteplist{columns:1}}

/* v53 Site D LIFT mode dropdown */
.liftsel{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:11px}
.liftsel::before{content:attr(data-l);color:var(--muted);min-width:3em}
.liftsel select{font-size:11px;padding:1px 2px;flex:1}
.liftsel select.nondef{border-color:#d97706;background:#fff7ed}
.liftsel small.fw{color:var(--muted);font-size:10px}
.liftnote{font-size:11px;color:var(--muted);padding:4px 2px}
.liftsel small.fw.old{color:#dc2626;font-weight:600}
