/* factory-ui — vfd.css: VFD の地・走査テクスチャ・ラベル/桁/ランプ/ステータスの部品
   出典: TAPE FACTORY web CSS(v8.15)。値は TF が正。直すときは全機種同時。gen-factory-ui.js で生成 */
@keyframes recblink { 0%, 49% { opacity: 1; } 50%, 100% { opacity: 0.25; } }
.vfd { position: relative; border-radius: 3px; padding: 14px 18px 13px; background: var(--f-vfd-bg); box-shadow: var(--f-vfd-shadow); font-family: var(--f-font-mono); overflow: hidden; }
.vfd::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(112deg, rgba(255,255,255,0.09), transparent 42%), repeating-linear-gradient(0deg, rgba(0,0,0,0.35) 0 1px, transparent 1px 3px); }
.vfd > div { position: relative; }
.vcaprow { margin-top: 15px; display: flex; align-items: center; justify-content: space-between; }
.vcaprow .lab { font-size: 9px; letter-spacing: 0.18em; color: var(--f-amber-lo); }
.vcaprow .val { font-size: 10px; letter-spacing: 0.1em; color: var(--f-amber); }
.vtime { font-size: 42px; line-height: 0.9; color: var(--f-amber); text-shadow: 0 0 14px var(--f-amber-glow); }
.vhr { margin-top: 13px; height: 1px; background: var(--f-vhr); }
.vgrid { margin-top: 11px; display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; }
.vgrid .lab { font-size: 8px; letter-spacing: 0.18em; color: var(--f-amber-lo); margin-bottom: 3px; }
.vgrid .val { font-size: 15px; letter-spacing: 0.06em; color: var(--f-amber); text-shadow: 0 0 9px var(--f-amber-glow-soft); }
.segs { margin-top: 5px; display: flex; gap: 2px; height: 14px; }
.segs i { flex: 1; border-radius: 1px; background: rgba(255,255,255,0.06); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.05); }
.inds { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ind { display: flex; align-items: center; gap: 4px; opacity: 0.22; }
.ind.on { opacity: 1; }
.ind i { width: 5px; height: 5px; border-radius: 50%; }
.ind span { font-size: 9px; letter-spacing: 0.12em; }
.vmeta { font-size: 11px; letter-spacing: 0.12em; color: var(--f-amber-mid); }
.vrec { display: flex; align-items: center; gap: 5px; opacity: 0.14; }
.vrec.on { opacity: 1; }
.vrec i { width: 8px; height: 8px; border-radius: 50%; background: var(--f-red); box-shadow: 0 0 10px var(--f-red-glow); animation: recblink 0.7s steps(1, end) infinite; animation-play-state: paused; }
.vrec.on i { animation-play-state: running; }
.vrec span { font-size: 11px; letter-spacing: 0.14em; color: var(--f-red-txt); }
.vstatus { font-size: 12px; letter-spacing: 0.16em; color: var(--f-amber); text-shadow: 0 0 10px var(--f-amber-glow-txt); white-space: nowrap; }
.vstatus.err { color: var(--f-err); text-shadow: 0 0 10px rgba(255,60,40,0.6); }
